mirror of
				https://github.com/minetest-mods/mapfix.git
				synced 2025-11-04 07:05:28 +01:00 
			
		
		
		
	Compare commits
	
		
			10 Commits
		
	
	
		
			d4e9de50a9
			...
			618fff5c19
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 618fff5c19 | |||
| 
						 | 
					16ef3878ae | ||
| 
						 | 
					85aac3c262 | ||
| 
						 | 
					a7109318ca | ||
| 
						 | 
					a5fd28affd | ||
| 
						 | 
					932e12410a | ||
| 
						 | 
					8bbfb77ddb | ||
| 
						 | 
					4d3f6505b5 | ||
| 
						 | 
					6772a29a37 | ||
| 
						 | 
					ca4b20ddcc | 
							
								
								
									
										17
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
name: build
 | 
			
		||||
 | 
			
		||||
on: [push, pull_request]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - uses: actions/checkout@v1
 | 
			
		||||
    - name: apt
 | 
			
		||||
      run: sudo apt-get install -y luarocks
 | 
			
		||||
    - name: luacheck install
 | 
			
		||||
      run: luarocks install --local luacheck
 | 
			
		||||
    - name: luacheck run
 | 
			
		||||
      run: $HOME/.luarocks/bin/luacheck ./
 | 
			
		||||
							
								
								
									
										21
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
unused_args = false
 | 
			
		||||
allow_defined_top = true
 | 
			
		||||
exclude_files = {".luacheckrc"}
 | 
			
		||||
 | 
			
		||||
globals = {
 | 
			
		||||
    "minetest",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
read_globals = {
 | 
			
		||||
    string = {fields = {"split"}},
 | 
			
		||||
    table = {fields = {"copy", "getn"}},
 | 
			
		||||
 | 
			
		||||
    -- Builtin
 | 
			
		||||
    "vector", "ItemStack",
 | 
			
		||||
    "dump", "DIR_DELIM", "VoxelArea", "Settings",
 | 
			
		||||
 | 
			
		||||
    -- MTG
 | 
			
		||||
    "default", "sfinv", "creative", "carts",
 | 
			
		||||
 | 
			
		||||
    --depends
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
#mapfix
 | 
			
		||||
# mapfix
 | 
			
		||||
 | 
			
		||||
Fix some map errors (flow and light problems)
 | 
			
		||||
 | 
			
		||||
@@ -7,7 +7,8 @@ Fix some map errors (flow and light problems)
 | 
			
		||||
Look at the water and the jungle trunk at the center.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##minetest.conf settings
 | 
			
		||||
* mapfix_default_size (by default 40) : size used when omitted
 | 
			
		||||
* mapfix_max_size (by default 50) : maximum size allowed for players
 | 
			
		||||
* mapfix_delay (by default 15) : minimal delay in seconds between 2 "/mapfix" (to avoid server freezing)
 | 
			
		||||
## minetest.conf settings
 | 
			
		||||
* mapfix_default_size (by default 24) : size used when omitted
 | 
			
		||||
* mapfix_max_size (by default 32) : maximum size allowed for players
 | 
			
		||||
* mapfix_delay (by default 15) : minimal delay in seconds between 2 `/mapfix` (to avoid server freezing)
 | 
			
		||||
* mapfix_priv (by default server) : priv that allows use of `/mapfix` without restrictions
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								init.lua
									
									
									
									
									
								
							@@ -9,9 +9,19 @@ end
 | 
			
		||||
 | 
			
		||||
local previous = os.time()
 | 
			
		||||
 | 
			
		||||
local default_size = tonumber(minetest.setting_get("mapfix_default_size")) or 24
 | 
			
		||||
local max_size = tonumber(minetest.setting_get("mapfix_max_size")) or 32
 | 
			
		||||
local delay = tonumber(minetest.setting_get("mapfix_delay")) or 15
 | 
			
		||||
local default_size = tonumber(minetest.settings:get("mapfix_default_size")) or 24
 | 
			
		||||
local max_size = tonumber(minetest.settings:get("mapfix_max_size")) or 32
 | 
			
		||||
local delay = tonumber(minetest.settings:get("mapfix_delay")) or 15
 | 
			
		||||
 | 
			
		||||
local function mapfix_priv()
 | 
			
		||||
    local priv = minetest.settings:get("mapfix_priv")
 | 
			
		||||
 | 
			
		||||
    if not minetest.registered_privileges[priv] then
 | 
			
		||||
        return "server"
 | 
			
		||||
    else
 | 
			
		||||
        return priv
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("mapfix", {
 | 
			
		||||
	params = "<size>",
 | 
			
		||||
@@ -23,21 +33,24 @@ minetest.register_chatcommand("mapfix", {
 | 
			
		||||
		if size >= 121 then
 | 
			
		||||
			return false, "Radius is too big"
 | 
			
		||||
		end
 | 
			
		||||
		local privs = minetest.check_player_privs(name, {server=true})
 | 
			
		||||
		local privs = minetest.check_player_privs(name, mapfix_priv())
 | 
			
		||||
		local time = os.time()
 | 
			
		||||
 | 
			
		||||
		if not privs then
 | 
			
		||||
			if size > max_size then
 | 
			
		||||
				return false, "You need the server privilege to exceed the radius of " .. max_size .. " blocks"
 | 
			
		||||
				return false, "You need the " .. mapfix_priv() .. " privilege to exceed the radius of " .. max_size .. " blocks"
 | 
			
		||||
			elseif time - previous < delay then
 | 
			
		||||
				return false, "Wait at least " .. delay .. " seconds from the previous \"/mapfix\"."
 | 
			
		||||
			end
 | 
			
		||||
			previous = time
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		minetest.log("action", name .. " uses mapfix at " .. minetest.pos_to_string(vector.round(pos)) .. " with radius " .. size)
 | 
			
		||||
		minetest.log("action",
 | 
			
		||||
        name .. " uses mapfix at " .. minetest.pos_to_string(vector.round(pos)) .. " with radius " .. size)
 | 
			
		||||
 | 
			
		||||
		size = math.max(math.floor(size - 8), 0) -- When passed to get_voxel_manip, positions are rounded up, to a multiple of 16 nodes in each direction. By subtracting 8 it's rounded to the nearest chunk border. max is used to avoid negative radius.
 | 
			
		||||
        -- When passed to get_voxel_manip, positions are rounded up, to a multiple of 16 nodes in each direction.
 | 
			
		||||
        -- By subtracting 8 it's rounded to the nearest chunk border. max is used to avoid negative radius.
 | 
			
		||||
		size = math.max(math.floor(size - 8), 0)
 | 
			
		||||
 | 
			
		||||
		local minp = vector.subtract(pos, size)
 | 
			
		||||
		local maxp = vector.add(pos, size)
 | 
			
		||||
@@ -46,3 +59,5 @@ minetest.register_chatcommand("mapfix", {
 | 
			
		||||
		return true, "Done."
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.log("action", "[mapfix] loaded.")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
mapfix_default_size (default size a mapfix range is) int 24
 | 
			
		||||
mapfix_max_size (max size a mapfix range can be) int 32
 | 
			
		||||
mapfix_delay (delay between issueing of /mapfix for players) int 15
 | 
			
		||||
mapfix_priv (priv for unrestricted /mapfix use) string server
 | 
			
		||||
		Reference in New Issue
	
	Block a user