зеркало из
				https://github.com/sys4-fr/server-nalc.git
				synced 2025-10-31 20:45:22 +01:00 
			
		
		
		
	Sethome working in the nether, factions too.
- Sethome depends on nether - There is a home in the nether and another in the real world - Factions no longer use mobf missing API - Players' skin refreshed after only 2min
Этот коммит содержится в:
		
							
								
								
									
										2
									
								
								minetestforfun_game/mods/sethome/depends.txt
									
									
									
									
									
										Обычный файл
									
								
							
							
						
						
									
										2
									
								
								minetestforfun_game/mods/sethome/depends.txt
									
									
									
									
									
										Обычный файл
									
								
							| @@ -0,0 +1,2 @@ | ||||
| default | ||||
| nether | ||||
| @@ -1,8 +1,9 @@ | ||||
| local homes_file = minetest.get_worldpath() .. "/homes" | ||||
| local homepos = {} | ||||
| local real_homes_file = minetest.get_worldpath() .. "/real_homes" | ||||
| local nether_homes_file = minetest.get_worldpath() .. "/nether_homes" | ||||
| local homepos = {real = {},nether = {}} | ||||
|  | ||||
| local function loadhomes() | ||||
|     local input = io.open(homes_file, "r") | ||||
|     local input = io.open(real_homes_file, "r") | ||||
|     if input then | ||||
| 		repeat | ||||
|             local x = input:read("*n") | ||||
| @@ -12,12 +13,29 @@ local function loadhomes() | ||||
|             local y = input:read("*n") | ||||
|             local z = input:read("*n") | ||||
|             local name = input:read("*l") | ||||
|             homepos[name:sub(2)] = {x = x, y = y, z = z} | ||||
|             homepos.real[name:sub(2)] = {x = x, y = y, z = z} | ||||
|         until input:read(0) == nil | ||||
|         io.close(input) | ||||
|     else | ||||
|         homepos = {} | ||||
|         homepos.real = {} | ||||
|     end | ||||
|      | ||||
|     input = io.open(nether_homes_file, "r") | ||||
|     if input then | ||||
| 		repeat | ||||
| 			local x = input:read("*n") | ||||
| 			if x == nil then | ||||
| 				break | ||||
| 			end | ||||
| 			local y = input:read("*n") | ||||
| 			local z = input:read("*n")  | ||||
| 			local name = input:read("*n") | ||||
| 			homepos.nether[name:sub(2)] = {x = x, y = y, z = z} | ||||
| 		until input:read(0) == nil | ||||
| 		io.close(input) | ||||
| 	else | ||||
| 		homepos.nether = {} | ||||
| 	end | ||||
| end | ||||
|  | ||||
| loadhomes() | ||||
| @@ -31,12 +49,19 @@ minetest.register_chatcommand("home", { | ||||
|     privs = {home=true}, | ||||
|     func = function(name) | ||||
|         local player = minetest.env:get_player_by_name(name) | ||||
|         if not player_in_nether then return end | ||||
|         local is_in_nether = table.icontains(players_in_nether, name) | ||||
|  | ||||
|         if player == nil then | ||||
|             -- just a check to prevent the server crashing | ||||
|             return false | ||||
|         end | ||||
|         if homepos[player:get_player_name()] then | ||||
|             player:setpos(homepos[player:get_player_name()]) | ||||
| 			if is_in_nether then | ||||
| 				player:setpos(nether.homepos[player:get_player_name()]) | ||||
|             else | ||||
| 				player:setpos(real.homepos[player:get_player_name()]) | ||||
| 			end | ||||
|             minetest.chat_send_player(name, "Teleported to home!") | ||||
|         else | ||||
|             minetest.chat_send_player(name, "Set a home using /sethome") | ||||
| @@ -50,11 +75,21 @@ minetest.register_chatcommand("sethome", { | ||||
|     func = function(name) | ||||
|         local player = minetest.env:get_player_by_name(name) | ||||
|         local pos = player:getpos() | ||||
|         homepos[player:get_player_name()] = pos | ||||
|         if not players_in_nether then return end | ||||
|         local is_in_nether = table.icontains(players_in_nether, name) | ||||
|         if is_in_nether then | ||||
| 			homepos.nether[player:get_player_name()] = pos | ||||
| 		else | ||||
| 			homepos.real[player:get_player_name()] = pos | ||||
| 		end | ||||
|         minetest.chat_send_player(name, "Home set!") | ||||
|         changed = true | ||||
|         if changed then | ||||
|         	local output = io.open(homes_file, "w") | ||||
| 			if is_in_nether then | ||||
| 				local output = io.open(nether_homes_file, "w") | ||||
|             else | ||||
| 				local output = io.open(real_homes_file, "w") | ||||
| 			end | ||||
|             for i, v in pairs(homepos) do | ||||
|                 output:write(v.x.." "..v.y.." "..v.z.." "..i.."\n") | ||||
|             end | ||||
|   | ||||
		Ссылка в новой задаче
	
	Block a user