Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
loud_walking
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Illuna-Minetest
loud_walking
Commits
96154a49
Commit
96154a49
authored
7 years ago
by
Duane Robertson
Browse files
Options
Downloads
Patches
Plain Diff
Add missing files.
parent
82159869
No related branches found
No related tags found
No related merge requests found
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
schematics.lua
+177
-0
177 additions, 0 deletions
schematics.lua
terrain.lua
+553
-0
553 additions, 0 deletions
terrain.lua
with
730 additions
and
0 deletions
schematics.lua
0 → 100644
+
177
−
0
View file @
96154a49
-- Loud Walking schematics.lua
-- Copyright Duane Robertson (duane@duanerobertson.com), 2017
-- Distributed under the LGPLv2.1 (https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
-- Create and initialize a table for a schematic.
function
loud_walking
.
schematic_array
(
width
,
height
,
depth
)
if
not
(
width
and
height
and
depth
and
type
(
width
)
==
'number'
and
type
(
height
)
==
'number'
and
type
(
depth
)
==
'number'
)
then
return
end
-- Dimensions of data array.
local
s
=
{
size
=
{
x
=
width
,
y
=
height
,
z
=
depth
}}
s
.
data
=
{}
for
z
=
0
,
depth
-
1
do
for
y
=
0
,
height
-
1
do
for
x
=
0
,
width
-
1
do
local
i
=
z
*
width
*
height
+
y
*
width
+
x
+
1
s
.
data
[
i
]
=
{}
s
.
data
[
i
].
name
=
"air"
s
.
data
[
i
].
param1
=
000
end
end
end
s
.
yslice_prob
=
{}
return
s
end
local
displaceable
=
table
.
copy
(
loud_walking
.
ground_nodes
)
displaceable
[
loud_walking
.
node
[
'default:water_source'
]]
=
true
loud_walking
.
place_schematic
=
function
(
minp
,
maxp
,
data
,
p2data
,
area
,
node
,
pos
,
schem
,
center
,
bound
)
if
not
(
minp
and
maxp
and
data
and
p2data
and
area
and
node
and
pos
and
schem
and
type
(
data
)
==
'table'
and
type
(
p2data
)
==
'table'
and
type
(
schem
)
==
'table'
)
then
return
end
local
pod_size
=
loud_walking
.
pod_size
local
bevel
=
loud_walking
.
bevel
local
rot
=
math.random
(
4
)
-
1
local
yslice
=
{}
-- true if the slice should be removed
if
schem
.
yslice_prob
then
for
_
,
ys
in
pairs
(
schem
.
yslice_prob
)
do
yslice
[
ys
.
ypos
]
=
((
ys
.
prob
or
254
)
<
math.random
(
254
))
end
end
if
center
then
pos
.
x
=
pos
.
x
-
math.floor
(
schem
.
size
.
x
/
2
)
pos
.
z
=
pos
.
z
-
math.floor
(
schem
.
size
.
z
/
2
)
end
for
z1
=
0
,
schem
.
size
.
z
-
1
do
for
x1
=
0
,
schem
.
size
.
x
-
1
do
local
x
,
z
if
rot
==
0
then
x
,
z
=
x1
,
z1
elseif
rot
==
1
then
x
,
z
=
schem
.
size
.
z
-
z1
-
1
,
x1
elseif
rot
==
2
then
x
,
z
=
schem
.
size
.
x
-
x1
-
1
,
schem
.
size
.
z
-
z1
-
1
elseif
rot
==
3
then
x
,
z
=
z1
,
schem
.
size
.
x
-
x1
-
1
end
local
fdz
=
bound
.
fpos
.
z
+
pos
.
z
+
z
local
fdx
=
bound
.
fpos
.
x
+
pos
.
x
+
x
--local dz = pos.z - minp.z + z
--local dx = pos.x - minp.x + x
--if pos.x + x > minp.x and pos.x + x < maxp.x and pos.z + z > minp.z and pos.z + z < maxp.z then
if
true
then
local
ivm
=
area
:
index
(
pos
.
x
+
x
,
pos
.
y
,
pos
.
z
+
z
)
local
isch
=
z1
*
schem
.
size
.
y
*
schem
.
size
.
x
+
x1
+
1
for
y
=
0
,
schem
.
size
.
y
-
1
do
local
fdy
=
bound
.
fpos
.
y
+
pos
.
y
+
y
--local dy = pos.y - minp.y + y
if
not
yslice
[
y
]
then
if
fdz
>=
pod_size
.
z
or
fdx
>=
pod_size
.
x
or
fdy
>=
pod_size
.
y
or
fdy
<
1
or
fdz
<
1
or
fdx
<
1
then
-- nop
elseif
math.min
(
fdx
,
pod_size
.
x
-
fdx
)
+
math.min
(
fdy
,
pod_size
.
y
-
fdy
)
+
math.min
(
fdz
,
pod_size
.
z
-
fdz
)
<
bevel
then
-- nop
elseif
data
[
ivm
]
==
node
[
'air'
]
or
data
[
ivm
]
==
node
[
'ignore'
]
or
(
schem
.
data
[
isch
].
force_place
and
displaceable
[
data
[
ivm
]])
then
local
prob
=
schem
.
data
[
isch
].
prob
or
schem
.
data
[
isch
].
param1
or
255
if
prob
>=
math.random
(
254
)
and
schem
.
data
[
isch
].
name
~=
"air"
then
data
[
ivm
]
=
node
[
schem
.
data
[
isch
].
name
]
end
local
param2
=
schem
.
data
[
isch
].
param2
or
0
p2data
[
ivm
]
=
param2
end
ivm
=
ivm
+
area
.
ystride
end
isch
=
isch
+
schem
.
size
.
x
end
end
end
end
end
loud_walking
.
schematics
=
{}
local
default_schematic_path
=
minetest
.
get_modpath
(
"default"
)
..
"/schematics/"
local
function
convert_mts
(
mts
)
local
sch
=
minetest
.
serialize_schematic
(
default_schematic_path
..
'/'
..
mts
,
'lua'
,
{})
sch
=
minetest
.
deserialize
(
'return {'
..
sch
..
'}'
)
return
sch
.
schematic
end
do
local
sch
=
{
--{name='acacia_bush', file='acacia_bush.mts'},
--{name='acacia_log', file='acacia_log.mts'},
--{name='acacia_tree_from_sapling', file='acacia_tree_from_sapling.mts'},
{
name
=
'acacia_tree'
,
file
=
'acacia_tree.mts'
},
--{name='apple_log', file='apple_log.mts'},
--{name='apple_tree_from_sapling', file='apple_tree_from_sapling.mts'},
{
name
=
'apple_tree'
,
file
=
'apple_tree.mts'
},
--{name='aspen_log', file='aspen_log.mts'},
--{name='aspen_tree_from_sapling', file='aspen_tree_from_sapling.mts'},
{
name
=
'aspen_tree'
,
file
=
'aspen_tree.mts'
},
--{name='bush', file='bush.mts'},
--{name='corals', file='corals.mts'},
--{name='jungle_log', file='jungle_log.mts'},
--{name='jungle_tree_from_sapling', file='jungle_tree_from_sapling.mts'},
{
name
=
'jungle_tree'
,
file
=
'jungle_tree.mts'
},
--{name='large_cactus', file='large_cactus.mts'},
--{name='papyrus', file='papyrus.mts'},
--{name='pine_log', file='pine_log.mts'},
--{name='pine_tree_from_sapling', file='pine_tree_from_sapling.mts'},
{
name
=
'pine_tree'
,
file
=
'pine_tree.mts'
},
--{name='snowy_pine_tree_from_sapling', file='snowy_pine_tree_from_sapling.mts'},
}
for
_
,
s
in
pairs
(
sch
)
do
loud_walking
.
schematics
[
s
.
name
]
=
convert_mts
(
s
.
file
)
end
end
do
local
t
=
table
.
copy
(
loud_walking
.
schematics
[
'apple_tree'
])
for
i
,
_
in
pairs
(
t
.
data
)
do
if
t
.
data
[
i
].
name
==
'default:leaves'
or
t
.
data
[
i
].
name
==
'default:leaves'
then
if
math.random
(
2
)
==
1
then
t
.
data
[
i
].
name
=
'loud_walking:leaves_black'
else
t
.
data
[
i
].
name
=
'loud_walking:sticks_default'
end
end
end
loud_walking
.
schematics
[
'decaying_tree'
]
=
t
end
do
local
w
,
h
,
d
=
1
,
8
,
1
local
s
=
loud_walking
.
schematic_array
(
w
,
h
,
d
)
for
y
=
0
,
math.floor
(
h
/
2
)
-
1
do
s
.
data
[
0
*
d
*
h
+
y
*
d
+
0
+
1
].
name
=
'loud_walking:fur_tree'
s
.
data
[
0
*
d
*
h
+
y
*
d
+
0
+
1
].
param1
=
255
end
for
y
=
0
,
h
-
1
do
if
y
/
2
==
math.floor
(
y
/
2
)
then
s
.
yslice_prob
[
#
s
.
yslice_prob
+
1
]
=
{
ypos
=
y
,
prob
=
170
}
end
end
loud_walking
.
schematics
[
'fur_tree'
]
=
s
end
This diff is collapsed.
Click to expand it.
terrain.lua
0 → 100644
+
553
−
0
View file @
96154a49
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment