Convert ZIP version to git repo
This commit is contained in:
commit
f92988ad96
7
README.txt
Normal file
7
README.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Trail 0.3.1 by paramat
|
||||
For Minetest 0.4.15 and later
|
||||
Depends: default
|
||||
Licenses: Source code MIT. Textures CC BY-SA (3.0)
|
||||
|
||||
This mod was developed from 'desire path' mod by Casimir
|
||||
https://forum.minetest.net/viewtopic.php?id=3390
|
1
depends.txt
Normal file
1
depends.txt
Normal file
@ -0,0 +1 @@
|
||||
default
|
303
init.lua
Normal file
303
init.lua
Normal file
@ -0,0 +1,303 @@
|
||||
-- Parameters
|
||||
|
||||
local FOO = true -- Enable footprints.
|
||||
local FUNCYC = 0.2 -- Function cycle in seconds.
|
||||
local TRACHA = 0.1 -- Chance walked dirt/grass is worn and compacted to trail:trail.
|
||||
local ICECHA = 0.05 -- Chance walked snowblock is compacted to ice.
|
||||
|
||||
local EROSION = true -- Enable footprint and trail:trail erosion.
|
||||
local EROINT = 16 -- Erosion interval.
|
||||
local EROCHA = 128 -- Erosion 1/x chance.
|
||||
|
||||
-- Player positions
|
||||
|
||||
local player_pos = {}
|
||||
local player_pos_previous = {}
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
player_pos_previous[player:get_player_name()] = {x = 0, y = 0, z = 0}
|
||||
end)
|
||||
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
player_pos_previous[player:get_player_name()] = nil
|
||||
end)
|
||||
|
||||
-- Nodes
|
||||
|
||||
minetest.register_node("trail:trail", {
|
||||
tiles = {"trail_trailtop.png", "default_dirt.png",
|
||||
"default_dirt.png^trail_trailside.png"},
|
||||
groups = {crumbly = 2},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:dirt", {
|
||||
description = "Dirt With Footprint",
|
||||
tiles = {"default_dirt.png^default_footprint.png", "default_dirt.png"},
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:dirt_with_grass", {
|
||||
description = "Dirt with Grass and Footprint",
|
||||
tiles = {"default_grass.png^default_footprint.png", "default_dirt.png",
|
||||
{name = "default_dirt.png^default_grass_side.png",
|
||||
tileable_vertical = false}},
|
||||
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_grass_footstep", gain = 0.25},
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:dirt_with_dry_grass", {
|
||||
description = "Dirt with Dry Grass and Footprint",
|
||||
tiles = {"default_dry_grass.png^default_footprint.png", "default_dirt.png",
|
||||
{name = "default_dirt.png^default_dry_grass_side.png",
|
||||
tileable_vertical = false}},
|
||||
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_grass_footstep", gain = 0.4},
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:dirt_with_snow", {
|
||||
description = "Dirt with Snow and Footprint",
|
||||
tiles = {"default_snow.png^default_footprint.png", "default_dirt.png",
|
||||
{name = "default_dirt.png^default_snow_side.png",
|
||||
tileable_vertical = false}},
|
||||
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_snow_footstep", gain = 0.15},
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:sand", {
|
||||
description = "Sand With Footprint",
|
||||
tiles = {"default_sand.png^default_footprint.png", "default_sand.png"},
|
||||
groups = {crumbly = 3, falling_node = 1, sand = 1},
|
||||
drop = "default:sand",
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:desert_sand", {
|
||||
description = "Desert Sand With Footprint",
|
||||
tiles = {"default_desert_sand.png^default_footprint.png", "default_desert_sand.png"},
|
||||
groups = {crumbly = 3, falling_node = 1, sand = 1},
|
||||
drop = "default:desert_sand",
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:silver_sand", {
|
||||
description = "Silver Sand With Footprint",
|
||||
tiles = {"default_silver_sand.png^default_footprint.png", "default_silver_sand.png"},
|
||||
groups = {crumbly = 3, falling_node = 1, sand = 1},
|
||||
drop = "default:silver_sand",
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:snow", {
|
||||
description = "Snow With Footprint",
|
||||
tiles = {"default_snow.png^default_footprint.png", "default_snow.png"},
|
||||
inventory_image = "default_snowball.png",
|
||||
wield_image = "default_snowball.png",
|
||||
paramtype = "light",
|
||||
buildable_to = true,
|
||||
floodable = true,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
|
||||
},
|
||||
},
|
||||
groups = {crumbly = 3, falling_node = 1, puts_out_fire = 1},
|
||||
drop = "default:snow",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_snow_footstep", gain = 0.15},
|
||||
dug = {name = "default_snow_footstep", gain = 0.2},
|
||||
dig = {name = "default_snow_footstep", gain = 0.2}
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:snowblock", {
|
||||
description = "Snow Block With Footprint",
|
||||
tiles = {"default_snow.png^default_footprint.png", "default_snow.png"},
|
||||
groups = {crumbly = 3, puts_out_fire = 1, cools_lava = 1},
|
||||
drop = "default:snowblock",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_snow_footstep", gain = 0.15},
|
||||
dug = {name = "default_snow_footstep", gain = 0.2},
|
||||
dig = {name = "default_snow_footstep", gain = 0.2}
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_node("trail:wheat", {
|
||||
description = "Flattened Wheat",
|
||||
tiles = {"trail_flat_wheat.png"},
|
||||
inventory_image = "trail_flat_wheat.png",
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
buildable_to = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -3 / 8, 0.5}
|
||||
},
|
||||
},
|
||||
groups = {snappy = 3, flammable = 2, attached_node = 1},
|
||||
drop = "",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
-- Globalstep function
|
||||
|
||||
local timer = 0
|
||||
|
||||
if FOO then
|
||||
minetest.register_globalstep(function(dtime)
|
||||
timer = timer + dtime
|
||||
if timer > FUNCYC then
|
||||
timer = 0
|
||||
for _, player in ipairs(minetest.get_connected_players()) do
|
||||
local pos = player:getpos()
|
||||
player_pos[player:get_player_name()] = {
|
||||
x = math.floor(pos.x + 0.5),
|
||||
y = math.floor(pos.y + 0.2),
|
||||
z = math.floor(pos.z + 0.5)
|
||||
}
|
||||
|
||||
local p_ground = {
|
||||
x = math.floor(pos.x + 0.5),
|
||||
y = math.floor(pos.y + 0.4),
|
||||
z = math.floor(pos.z + 0.5)
|
||||
}
|
||||
local n_ground = minetest.get_node(p_ground).name
|
||||
local p_groundpl = {
|
||||
x = math.floor(pos.x + 0.5),
|
||||
y = math.floor(pos.y - 0.5),
|
||||
z = math.floor(pos.z + 0.5)
|
||||
}
|
||||
local p_snow = {
|
||||
x = math.floor(pos.x + 0.5),
|
||||
y = math.floor(pos.y + 1.2),
|
||||
z = math.floor(pos.z + 0.5)
|
||||
}
|
||||
local n_snow = minetest.get_node(p_snow).name
|
||||
local p_snowpl = {
|
||||
x = math.floor(pos.x + 0.5),
|
||||
y = math.floor(pos.y + 0.5),
|
||||
z = math.floor(pos.z + 0.5)
|
||||
}
|
||||
|
||||
--if player_pos_previous[player:get_player_name()] == nil then
|
||||
--break
|
||||
--end
|
||||
|
||||
if player_pos[player:get_player_name()].x ~=
|
||||
player_pos_previous[player:get_player_name()].x or
|
||||
player_pos[player:get_player_name()].y <
|
||||
player_pos_previous[player:get_player_name()].y or
|
||||
player_pos[player:get_player_name()].z ~=
|
||||
player_pos_previous[player:get_player_name()].z then
|
||||
|
||||
if n_ground == "default:dirt" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:dirt"})
|
||||
elseif n_ground == "default:dirt_with_grass" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:dirt_with_grass"})
|
||||
elseif n_ground == "default:dirt_with_dry_grass" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:dirt_with_dry_grass"})
|
||||
elseif n_ground == "default:dirt_with_snow" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:dirt_with_snow"})
|
||||
elseif n_ground == "trail:dirt" or
|
||||
n_ground == "trail:dirt_with_grass" or
|
||||
n_ground == "trail:dirt_with_dry_grass" then
|
||||
if math.random() <= TRACHA then
|
||||
minetest.set_node(p_groundpl, {name = "trail:trail"})
|
||||
end
|
||||
|
||||
elseif n_ground == "default:sand" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:sand"})
|
||||
elseif n_ground == "default:desert_sand" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:desert_sand"})
|
||||
elseif n_ground == "default:silver_sand" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:silver_sand"})
|
||||
|
||||
elseif n_snow == "default:snow" then
|
||||
minetest.set_node(p_snowpl, {name = "trail:snow"})
|
||||
elseif n_ground == "default:snowblock" then
|
||||
minetest.set_node(p_groundpl, {name = "trail:snowblock"})
|
||||
elseif n_ground == "trail:snowblock" then
|
||||
if math.random() <= ICECHA then
|
||||
minetest.set_node(p_groundpl, {name = "default:ice"})
|
||||
end
|
||||
|
||||
elseif n_snow == "farming:wheat_5" or
|
||||
n_snow == "farming:wheat_6" or
|
||||
n_snow == "farming:wheat_7" or
|
||||
n_snow == "farming:wheat_8" then
|
||||
minetest.set_node(p_snowpl, {name = "trail:wheat",
|
||||
param2 = math.random(0, 1)})
|
||||
end
|
||||
end
|
||||
|
||||
player_pos_previous[player:get_player_name()] = {
|
||||
x = player_pos[player:get_player_name()].x,
|
||||
y = player_pos[player:get_player_name()].y,
|
||||
z = player_pos[player:get_player_name()].z
|
||||
}
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- ABM
|
||||
|
||||
if EROSION then
|
||||
minetest.register_abm({
|
||||
nodenames = {
|
||||
"trail:dirt",
|
||||
"trail:dirt_with_grass",
|
||||
"trail:dirt_with_dry_grass",
|
||||
"trail:dirt_with_snow",
|
||||
"trail:sand",
|
||||
"trail:desert_sand",
|
||||
"trail:silver_sand",
|
||||
"trail:snow",
|
||||
"trail:snowblock",
|
||||
"trail:trail"
|
||||
},
|
||||
interval = EROINT,
|
||||
chance = EROCHA,
|
||||
action = function(pos, node, _, _)
|
||||
local nodename = node.name
|
||||
|
||||
if nodename == "trail:dirt" then
|
||||
minetest.set_node(pos, {name = "default:dirt"})
|
||||
elseif nodename == "trail:dirt_with_grass" then
|
||||
minetest.set_node(pos, {name = "default:dirt_with_grass"})
|
||||
elseif nodename == "trail:dirt_with_dry_grass" then
|
||||
minetest.set_node(pos, {name = "default:dirt_with_dry_grass"})
|
||||
elseif nodename == "trail:dirt_with_snow" then
|
||||
minetest.set_node(pos, {name = "default:dirt_with_snow"})
|
||||
elseif nodename == "trail:sand" then
|
||||
minetest.set_node(pos, {name = "default:sand"})
|
||||
elseif nodename == "trail:desert_sand" then
|
||||
minetest.set_node(pos, {name = "default:desert_sand"})
|
||||
elseif nodename == "trail:silver_sand" then
|
||||
minetest.set_node(pos, {name = "default:silver_sand"})
|
||||
elseif nodename == "trail:snow" then
|
||||
minetest.set_node(pos, {name = "default:snow"})
|
||||
elseif nodename == "trail:snowblock" then
|
||||
minetest.set_node(pos, {name = "default:snowblock"})
|
||||
elseif nodename == "trail:trail" then
|
||||
minetest.set_node(pos, {name = "default:dirt"})
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
58
license.txt
Normal file
58
license.txt
Normal file
@ -0,0 +1,58 @@
|
||||
License of source code
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
Copyright (C) 2013-2017 paramat
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more details:
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
License of media (textures)
|
||||
---------------------------
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
Copyright (C) 2013-2017 paramat
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||
your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
BIN
textures/trail_flat_wheat.png
Normal file
BIN
textures/trail_flat_wheat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 281 B |
BIN
textures/trail_trailside.png
Normal file
BIN
textures/trail_trailside.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 629 B |
BIN
textures/trail_trailtop.png
Normal file
BIN
textures/trail_trailtop.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 324 B |
Loading…
x
Reference in New Issue
Block a user