Fixed protection to use newer API
This commit is contained in:
		
							
								
								
									
										119
									
								
								factions.lua
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								factions.lua
									
									
									
									
									
								
							| @@ -498,11 +498,9 @@ end | ||||
| function factions.get_player_faction(playername) | ||||
|     local facname = factions.players[playername] | ||||
|     if facname then | ||||
|         minetest.chat_send_all(facname) | ||||
|         local faction = factions.factions[facname] | ||||
|         return faction | ||||
|     end | ||||
|     minetest.chat_send_all(playername) | ||||
|     return nil | ||||
| end | ||||
|  | ||||
| @@ -557,13 +555,13 @@ end | ||||
| ------------------------------------------------------------------------------- | ||||
| function factions.get_faction_list() | ||||
|  | ||||
| 	local retval = {} | ||||
|     local retval = {} | ||||
|  | ||||
| 	for key,value in pairs(factions.factions) do | ||||
| 		table.insert(retval,key) | ||||
| 	end | ||||
|     for key,value in pairs(factions.factions) do | ||||
|         table.insert(retval,key) | ||||
|     end | ||||
|  | ||||
| 	return retval | ||||
|     return retval | ||||
| end | ||||
|  | ||||
| ------------------------------------------------------------------------------- | ||||
| @@ -575,19 +573,19 @@ end | ||||
| ------------------------------------------------------------------------------- | ||||
| function factions.save() | ||||
|  | ||||
| 	--saving is done much more often than reading data to avoid delay | ||||
| 	--due to figuring out which data to save and which is temporary only | ||||
| 	--all data is saved here | ||||
| 	--this implies data needs to be cleant up on load | ||||
|     --saving is done much more often than reading data to avoid delay | ||||
|     --due to figuring out which data to save and which is temporary only | ||||
|     --all data is saved here | ||||
|     --this implies data needs to be cleant up on load | ||||
|  | ||||
| 	local file,error = io.open(factions_worldid .. "/" .. "factions.conf","w") | ||||
|     local file,error = io.open(factions_worldid .. "/" .. "factions.conf","w") | ||||
|  | ||||
| 	if file ~= nil then | ||||
| 		file:write(minetest.serialize(factions.factions)) | ||||
| 		file:close() | ||||
| 	else | ||||
| 		minetest.log("error","MOD factions: unable to save factions world specific data!: " .. error) | ||||
| 	end | ||||
|     if file ~= nil then | ||||
|         file:write(minetest.serialize(factions.factions)) | ||||
|         file:close() | ||||
|     else | ||||
|         minetest.log("error","MOD factions: unable to save factions world specific data!: " .. error) | ||||
|     end | ||||
|  | ||||
| end | ||||
|  | ||||
| @@ -601,11 +599,11 @@ end | ||||
| --! @return true/false | ||||
| ------------------------------------------------------------------------------- | ||||
| function factions.load() | ||||
| 	local file,error = io.open(factions_worldid .. "/" .. "factions.conf","r") | ||||
|     local file,error = io.open(factions_worldid .. "/" .. "factions.conf","r") | ||||
|  | ||||
| 	if file ~= nil then | ||||
| 		local raw_data = file:read("*a") | ||||
| 		factions.factions = minetest.deserialize(raw_data) | ||||
|     if file ~= nil then | ||||
|         local raw_data = file:read("*a") | ||||
|         factions.factions = minetest.deserialize(raw_data) | ||||
|         for facname, faction in pairs(factions.factions) do | ||||
|             minetest.log("action", facname..","..faction.name) | ||||
|             for player, rank in pairs(faction.players) do | ||||
| @@ -630,7 +628,7 @@ function factions.load() | ||||
|                 faction.usedpower = faction:count_land() * factions.power_per_parcel | ||||
|             end | ||||
|         end | ||||
| 		file:close() | ||||
|         file:close() | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -671,14 +669,14 @@ function factions.convert(filename) | ||||
| end | ||||
|  | ||||
| minetest.register_on_dieplayer( | ||||
|     function(player) | ||||
|         local faction = factions.get_player_faction(player:get_player_name()) | ||||
|         if not faction then | ||||
|             return true | ||||
|         end | ||||
|         faction:decrease_power(factions.power_per_death) | ||||
| function(player) | ||||
|     local faction = factions.get_player_faction(player:get_player_name()) | ||||
|     if not faction then | ||||
|         return true | ||||
|     end | ||||
|     faction:decrease_power(factions.power_per_death) | ||||
|     return true | ||||
| end | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -695,45 +693,43 @@ local factionUpdate = 0. | ||||
|  | ||||
|  | ||||
| minetest.register_globalstep( | ||||
|     function(dtime) | ||||
|         hudUpdate = hudUpdate + dtime | ||||
|         factionUpdate = factionUpdate + dtime | ||||
|         if hudUpdate > .5 then | ||||
|             local playerslist = minetest.get_connected_players() | ||||
|             for i in pairs(playerslist) do | ||||
|                 local player = playerslist[i] | ||||
|                 local faction = factions.get_faction_at(player:getpos()) | ||||
|                 player:hud_remove("factionLand") | ||||
|                 player:hud_add({ | ||||
|                     hud_elem_type = "text", | ||||
|                     name = "factionLand", | ||||
|                     number = 0xFFFFFF, | ||||
|                     position = {x=0.1, y = .98}, | ||||
|                     text = (faction and faction.name) or "Wilderness", | ||||
|                     scale = {x=1, y=1}, | ||||
|                     alignment = {x=0, y=0}, | ||||
|                 }) | ||||
|             end | ||||
|             hudUpdate = 0. | ||||
|         end | ||||
|         if factionUpdate > factions.tick_time then | ||||
|             factions.faction_tick() | ||||
|             factionUpdate = 0. | ||||
| function(dtime) | ||||
|     hudUpdate = hudUpdate + dtime | ||||
|     factionUpdate = factionUpdate + dtime | ||||
|     if hudUpdate > .5 then | ||||
|         local playerslist = minetest.get_connected_players() | ||||
|         for i in pairs(playerslist) do | ||||
|             local player = playerslist[i] | ||||
|             local faction = factions.get_faction_at(player:getpos()) | ||||
|             player:hud_remove("factionLand") | ||||
|             player:hud_add({ | ||||
|                 hud_elem_type = "text", | ||||
|                 name = "factionLand", | ||||
|                 number = 0xFFFFFF, | ||||
|                 position = {x=0.1, y = .98}, | ||||
|                 text = (faction and faction.name) or "Wilderness", | ||||
|                 scale = {x=1, y=1}, | ||||
|                 alignment = {x=0, y=0}, | ||||
|             }) | ||||
|         end | ||||
|         hudUpdate = 0. | ||||
|     end | ||||
|     if factionUpdate > factions.tick_time then | ||||
|         factions.faction_tick() | ||||
|         factionUpdate = 0. | ||||
|     end | ||||
| end | ||||
| ) | ||||
| minetest.register_on_joinplayer( | ||||
|     function(player) | ||||
|     end | ||||
| function(player) | ||||
| end | ||||
| ) | ||||
| minetest.register_on_respawnplayer( | ||||
|     function(player) | ||||
|         local playername = player:get_player_name() | ||||
|         local faction = factions.players[playername] | ||||
|         local faction = factions.get_player_faction(player:get_player_name()) | ||||
|         if not faction then | ||||
|             return false | ||||
|         else | ||||
|             faction = factions.factions[faction] | ||||
|             if not faction.spawn then | ||||
|                 return false | ||||
|             else | ||||
| @@ -756,8 +752,8 @@ minetest.is_protected = function(pos, player) | ||||
|     end | ||||
|  | ||||
|     local parcelpos = factions.get_parcel_pos(pos) | ||||
|     local parcel_faction = factions.parcels[parcelpos] | ||||
|     local player_faction = factions.players[player] | ||||
|     local parcel_faction = factions.get_parcel_faction(parcelpos) | ||||
|     local player_faction = factions.get_player_faction(player) | ||||
|     -- check if wielding death banner | ||||
|     local player_info = minetest.get_player_by_name(player) | ||||
|     if not player_info then | ||||
| @@ -769,15 +765,12 @@ minetest.is_protected = function(pos, player) | ||||
|     end | ||||
|     local player_wield = player_info:get_wielded_item() | ||||
|     if player_wield:get_name() == "banners:death_banner" and player_faction then --todo: check for allies, maybe for permissions | ||||
|         player_faction = factions.factions[player_faction] | ||||
|         parcel_faction = factions.factions[parcel_faction] | ||||
|         return not player_faction:has_permission(player, "claim") and player_faction.power > 0. and not parcel_faction.is_admin | ||||
|     end | ||||
|     -- no faction | ||||
|     if not parcel_faction then | ||||
|         return default_is_protected(pos, player) | ||||
|     else | ||||
|         parcel_faction = factions.factions[parcel_faction] | ||||
|         if parcel_faction.name == player_faction then | ||||
|             return not parcel_faction:has_permission(player, "build") | ||||
|         elseif parcel_faction.attacked_parcels[parcelpos] then -- chunk is being attacked | ||||
|   | ||||
		Reference in New Issue
	
	Block a user