Merge pull request 'develop' (#38) from develop into master

Reviewed-on: #38
This commit is contained in:
Milan Meduna 2021-08-08 18:16:51 +02:00
commit adef3706c5
92 changed files with 4378 additions and 2540 deletions

View file

@ -1,4 +1,4 @@
mt_version="5.4.0"
mt_version="5.4.1"
first_install=y
ufw_enable=y
ufw_ssh_port_for_accept=22

View file

@ -0,0 +1,335 @@
-- place this file in mod ".ldoc" directory
local print, type, string, table, tostring, tonumber, error, pairs, ipairs
if import then
print = import("print")
type = import("type")
string = import("string")
table = import("table")
tostring = import("tostring")
tonumber = import("tonumber")
error = import("error")
pairs = import("pairs")
ipairs = import("ipairs")
end
project = "3d_armor"
title = "3D Armor"
format = "markdown"
not_luadoc = true
boilerplate = false
wrap = false
style = true
favicon = "https://www.minetest.net/media/icon.svg"
file = {
"3d_armor/api.lua",
".ldoc/settings.luadoc",
--".ldoc/armors.luadoc",
".ldoc/helmets.luadoc",
".ldoc/chestplates.luadoc",
".ldoc/leggings.luadoc",
".ldoc/boots.luadoc",
--".ldoc/shields.luadoc",
"shields/init.lua",
".ldoc/crafting.luadoc",
}
new_type("setting", "Settings")
new_type("armor", "Armors")
new_type("craft", "Craft Recipes")
alias("helmet", "armor")
alias("chestplate", "armor")
alias("leggings", "armor")
alias("boots", "armor")
alias("shield", "armor")
alias("grp", "group")
-- function declarations
local format_text
local format_group
custom_tags = {
-- settings
{
"settype",
title = "Type",
hidden = true,
},
{
"min",
title = "Minimum Value",
hidden = true,
},
{
"max",
title = "Maximum Value",
hidden = true,
},
{
"default",
title = "Default Value",
hidden = true,
},
-- craft items/tools
{
-- specify image basename only
"img",
title = "Inventory Image",
format = function(value)
return "<img src=\"../data/" .. value .. "\" style=\"width:32px; height:32px;\" />"
end,
},
{
-- specify full (relative or absolute) image path
"image",
title = "Image",
format = function(value)
return "<img src=\"" .. value .. "\" style=\"width:32px; height:32px;\" />"
end,
},
{
"group",
title = "Groups",
format = function(value)
return format_group(value)
end,
},
{
"armorgrp",
title = "Armor Groups",
format = function(value)
return format_group(value)
end,
},
{
"damagegrp",
title = "Damage Groups",
format = function(value)
return format_group(value)
end,
},
}
if string then
string.trim = function(st, delim)
if not delim then
delim = " "
end
while string.find(st, delim) == 1 do
st = st:sub(2)
end
while string.sub(st, string.len(st)) == delim do
st = st:sub(1, string.len(st)-1)
end
return st
end
string.split = function(st, delim)
local list = {}
local idx = string.find(st, delim)
while idx do
table.insert(list, st:sub(1, idx-1))
st = st:sub(idx+1)
idx = string.find(st, delim)
end
-- add remaining item
table.insert(list, st)
return list
end
end
if table then
if not table.copy then
table.copy = function(orig_table)
local new_table = {}
for k, v in pairs(orig_table) do
new_table[k] = v
end
return new_table
end
end
end
format_text = function(text, flags)
local ret = "<"
local ttype = "span"
if flags.code then
ttype = "code"
end
ret = ret .. ttype .. " style=\""
if flags.size then
ret = ret .. "font-size:" .. flags.size .. ";"
end
if flags.mono then
ret = ret .. "font-family:monospace;"
end
if flags.italic then
ret = ret .. "font-style:italic;"
end
if flags.bold then
ret = ret .. "font-weight:bold;"
end
if flags.color then
ret = ret .. "color:" .. flags.color .. ";"
end
if flags.bgcolor then
ret = ret .. "background-color:" .. flags.bgcolor .. ";"
end
ret = ret .. "\">" .. text .. "</" .. ttype .. ">"
return ret
end
format_group = function(text)
if string then
local idx, k, v = string.find(text, " ")
if idx then
text = format_text(string.sub(text, 1, idx-1) .. ": ", {mono=true, color="darkgreen"})
.. string.sub(text, idx)
end
end
return text
end
local function format_setting_tag(desc, value)
return "\n- <span style=\"font-size:80%;\">`" .. desc .. ":`</span> `" .. value .. "`"
end
local registered = {
settings = {},
}
local function setting_handler(item)
-- avoid parsing again
if registered.settings[item.name] then
return item
end
if not ipairs or not type then
return item
end
local tags = {
{"settype", "type"},
{"default"},
{"min", "minimum value"},
{"max", "maximum value"},
}
local def = {
["settype"] = format_setting_tag("type", "string"),
}
for _, t in ipairs(tags) do
local name = t[1]
local desc = t[2]
if not desc then desc = name end
local value = item.tags[name]
if type(value) == "table" then
if #value > 1 then
local msg = item.file.filename .. " (line " .. item.lineno
.. "): multiple instances of tag \"" .. name .. "\" found"
if error then
error(msg)
elseif print then
print("WARNING: " .. msg)
end
end
if value[1] then
def[name] = format_setting_tag(desc, value[1])
end
end
end
item.description = item.description .. "\n\n**Definition:**\n" .. def.settype
for _, t in ipairs({def.default, def.min, def.max}) do
if t then
item.description = item.description .. t
end
end
registered.settings[item.name] = true
return item
end
function custom_display_name_handler(item, default_handler)
if item.type == "setting" then
item = setting_handler(item)
end
if item then
return default_handler(item)
end
end
local custom_see_links = {
["ObjectRef"] = "https://minetest.gitlab.io/minetest/class-reference/#objectref",
["PlayerMetaRef"] = "https://minetest.gitlab.io/minetest/class-reference/#playermetaref",
["ItemDef"] = "https://minetest.gitlab.io/minetest/definition-tables/#item-definition",
["ItemStack"] = "https://minetest.gitlab.io/minetest/class-reference/#itemstack",
["groups"] = "https://minetest.gitlab.io/minetest/groups/",
["entity_damage_mechanism"] = "https://minetest.gitlab.io/minetest/entity-damage-mechanism/",
["vector"] = "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector",
}
local function format_custom_see(name, section)
local url = custom_see_links[name]
if not url then
url = ""
end
if not name then
name = ""
end
return name, url
end
custom_see_handler("^(ObjectRef)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(PlayerMetaRef)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(ItemDef)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(groups)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(entity_damage_mechanism)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(ItemStack)$", function(name, section)
return format_custom_see(name, section)
end)
custom_see_handler("^(vector)$", function(name, section)
return name, "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector"
end)

88
mods/3d_armor/.ldoc/gendoc.sh Executable file
View file

@ -0,0 +1,88 @@
#!/usr/bin/env bash
# Place this file in mod ".ldoc" directory.
#
# To change output directory set the `d_export` environment variable.
# Example:
# $ d_export=/custom/path ./gendoc.sh
d_ldoc="$(dirname $(readlink -f $0))"
f_config="${d_ldoc}/config.ld"
cd "${d_ldoc}/.."
d_root="$(pwd)"
d_export="${d_export:-${d_root}/3d_armor/docs/reference}"
d_data="${d_export}/data"
cmd_ldoc="${d_ldoc}/ldoc/ldoc.lua"
if test -f "${cmd_ldoc}"; then
if test ! -x "${cmd_ldoc}"; then
chmod +x "${cmd_ldoc}"
fi
else
cmd_ldoc="ldoc"
fi
# clean old files
rm -rf "${d_export}"
# generate items, settings, & crafts topics temp files
echo -e "\ngenerating temp files ..."
for script in "src" "settings" "crafts"; do
script="${d_ldoc}/parse_${script}.py"
if test ! -f "${script}"; then
echo "ERROR: script doesn't exist: ${script}"
else
# check script's executable bit
if test ! -x "${script}"; then
chmod +x "${script}"
fi
# execute script
"${script}"
fi
done
echo
# generate new doc files
"${cmd_ldoc}" --UNSAFE_NO_SANDBOX -c "${f_config}" -d "${d_export}" "${d_root}"; retval=$?
# check exit status
if test ${retval} -ne 0; then
echo -e "\nan error occurred (ldoc return code: ${retval})"
exit ${retval}
fi
echo -e "\ncleaning temp files ..."
rm -vf "${d_ldoc}/"*.luadoc
# HACK: ldoc does not seem to like the "shields:" prefix
echo -e "\ncompensating for LDoc's issue with \"shields:\" prefix ..."
sed -i \
-e 's/<strong>shield_/<strong>shields:shield_/' \
-e 's/<td class="name\(.*\)>shield_/<td class="name\1>shields:shield_/' \
-e 's/<a href="#shield_/<a href="#shields:shield_/' \
-e 's/<a name.*"shield_/<a name="shields:shield_/' \
"${d_export}/topics/shields.html"
# copy textures to data directory
printf "\ncopying textures ..."
mkdir -p "${d_data}"
texture_count=0
for d_mod in "3d_armor" "shields"; do
printf "\rcopying textures from ${d_mod} ...\n"
for png in $(find "${d_root}/${d_mod}/textures" -maxdepth 1 -type f -name "*.png"); do
if test -f "${d_data}/$(basename ${png})"; then
echo "WARNING: not overwriting existing file: ${png}"
else
cp "${png}" "${d_data}"
texture_count=$((texture_count + 1))
printf "\rcopied ${texture_count} textures"
fi
done
done
echo -e "\n\nDone!"

View file

@ -0,0 +1,305 @@
/* BEGIN RESET
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.8.2r1
*/
html {
color: #000;
background: #FFF;
}
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset,img {
border: 0;
}
address,caption,cite,code,dfn,em,strong,th,var,optgroup {
font-style: inherit;
font-weight: inherit;
}
del,ins {
text-decoration: none;
}
li {
margin-left: 20px;
}
caption,th {
text-align: left;
}
h1,h2,h3,h4,h5,h6 {
font-size: 100%;
font-weight: bold;
}
q:before,q:after {
content: '';
}
abbr,acronym {
border: 0;
font-variant: normal;
}
sup {
vertical-align: baseline;
}
sub {
vertical-align: baseline;
}
legend {
color: #000;
}
input,button,textarea,select,optgroup,option {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
input,button,textarea,select {*font-size:100%;
}
/* END RESET */
body {
margin-left: 1em;
margin-right: 1em;
font-family: arial, helvetica, geneva, sans-serif;
background-color: #ffffff; margin: 0px;
}
code, tt { font-family: monospace; font-size: 1.1em; }
span.parameter { font-family:monospace; }
span.parameter:after { content:":"; }
span.types:before { content:"("; }
span.types:after { content:")"; }
.type { font-weight: bold; font-style:italic }
body, p, td, th { font-size: .95em; line-height: 1.2em;}
p, ul { margin: 10px 0 0 0px;}
strong { font-weight: bold;}
em { font-style: italic;}
h1 {
font-size: 1.5em;
margin: 20px 0 20px 0;
}
h2, h3, h4 { margin: 15px 0 10px 0; }
h2 { font-size: 1.25em; }
h3 { font-size: 1.15em; }
h4 { font-size: 1.06em; }
a:link { font-weight: bold; color: #004080; text-decoration: none; }
a:visited { font-weight: bold; color: #006699; text-decoration: none; }
a:link:hover { text-decoration: underline; }
hr {
color:#cccccc;
background: #00007f;
height: 1px;
}
blockquote { margin-left: 3em; }
ul { list-style-type: disc; }
p.name {
font-family: "Andale Mono", monospace;
padding-top: 1em;
}
pre {
background-color: rgb(245, 245, 245);
border: 1px solid #C0C0C0; /* silver */
padding: 10px;
margin: 10px 0 10px 0;
overflow: auto;
font-family: "Andale Mono", monospace;
}
pre.example {
font-size: .85em;
}
table.index { border: 1px #00007f; }
table.index td { text-align: left; vertical-align: top; }
#container {
margin-left: 1em;
margin-right: 1em;
background-color: #f0f0f0;
}
#product {
text-align: center;
border-bottom: 1px solid #cccccc;
background-color: #ffffff;
}
#product big {
font-size: 2em;
}
#main {
background-color: #f0f0f0;
border-left: 2px solid #cccccc;
}
#navigation {
float: left;
width: 14em;
vertical-align: top;
background-color: #f0f0f0;
overflow: visible;
position: fixed;
}
#navigation h2 {
background-color:#e7e7e7;
font-size:1.1em;
color:#000000;
text-align: left;
padding:0.2em;
border-top:1px solid #dddddd;
border-bottom:1px solid #dddddd;
}
#navigation ul
{
font-size:1em;
list-style-type: none;
margin: 1px 1px 10px 1px;
}
#navigation li {
text-indent: -1em;
display: block;
margin: 3px 0px 0px 22px;
}
#navigation li li a {
margin: 0px 3px 0px -1em;
}
#content {
margin-left: 14em;
padding: 1em;
width: 700px;
border-left: 2px solid #cccccc;
border-right: 2px solid #cccccc;
background-color: #ffffff;
min-height: 425px;
}
#about {
clear: both;
padding: 5px;
border-top: 2px solid #cccccc;
background-color: #ffffff;
}
@media print {
body {
font: 12pt "Times New Roman", "TimeNR", Times, serif;
}
a { font-weight: bold; color: #004080; text-decoration: underline; }
#main {
background-color: #ffffff;
border-left: 0px;
}
#container {
margin-left: 2%;
margin-right: 2%;
background-color: #ffffff;
}
#content {
padding: 1em;
background-color: #ffffff;
}
#navigation {
display: none;
}
pre.example {
font-family: "Andale Mono", monospace;
font-size: 10pt;
page-break-inside: avoid;
}
}
table.module_list {
border-width: 1px;
border-style: solid;
border-color: #cccccc;
border-collapse: collapse;
}
table.module_list td {
border-width: 1px;
padding: 3px;
border-style: solid;
border-color: #cccccc;
}
table.module_list td.name { background-color: #f0f0f0; min-width: 200px; }
table.module_list td.summary { width: 100%; }
table.function_list {
border-width: 1px;
border-style: solid;
border-color: #cccccc;
border-collapse: collapse;
}
table.function_list td {
border-width: 1px;
padding: 3px;
border-style: solid;
border-color: #cccccc;
}
table.function_list td.name { background-color: #f0f0f0; min-width: 200px; }
table.function_list td.summary { width: 100%; }
ul.nowrap {
overflow:auto;
white-space:nowrap;
}
dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
dl.table h3, dl.function h3 {font-size: .95em;}
/* stop sublists from having initial vertical space */
ul ul { margin-top: 0px; }
ol ul { margin-top: 0px; }
ol ol { margin-top: 0px; }
ul ol { margin-top: 0px; }
/* make the target distinct; helps when we're navigating to a function */
a:target + * {
background-color: #FF9;
}
/* styles for prettification of source */
pre .comment { color: #558817; }
pre .constant { color: #a8660d; }
pre .escape { color: #844631; }
pre .keyword { color: #aa5050; font-weight: bold; }
pre .library { color: #0e7c6b; }
pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
pre .string { color: #8080ff; }
pre .number { color: #f8660d; }
pre .operator { color: #2239a8; font-weight: bold; }
pre .preprocessor, pre .prepro { color: #a33243; }
pre .global { color: #800080; }
pre .user-keyword { color: #800080; }
pre .prompt { color: #558817; }
pre .url { color: #272fc2; text-decoration: underline; }

View file

@ -0,0 +1,46 @@
#!/usr/bin/env python
# This script will parse source files for craft recipes.
import sys, os, codecs, errno
path = os.path.realpath(__file__)
script = os.path.basename(path)
d_root = os.path.dirname(os.path.dirname(path))
d_ldoc = os.path.join(d_root, ".ldoc")
craftfile = os.path.realpath(os.path.join(d_root, "3d_armor/armor.lua"))
if not os.path.isfile(craftfile):
print("ERROR: craft file does not exist for parsing: {}".format(craftfile))
sys.exit(errnor.ENOENT)
buffer = codecs.open(craftfile, "r", "utf-8")
if not buffer:
print("ERROR: could not open file for reading: {}".format(craftfile))
sys.exit(errno.EIO)
data_in = buffer.read()
buffer.close()
craft = ""
data_in = data_in.replace("\r\n", "\n").replace("\r", "\n")
for sect in data_in.split("\n---"):
if "@craft armor" in sect:
sect = "---{}".format(sect)
for li in sect.split("\n"):
if li.startswith("--"):
craft = "{}\n{}".format(craft, li)
outfile = os.path.join(d_ldoc, "crafting.luadoc")
buffer = codecs.open(outfile, "w", "utf-8")
if not buffer:
print("ERROR: could not open file for writing: {}".format(outfile))
sys.exit(errno.EIO)
buffer.write("\n--- 3D Armor Crafting\n--\n-- @topic crafting\n\n{}\n".format(craft))
buffer.close()
print("crafts exported to\t{}".format(outfile))

View file

@ -0,0 +1,118 @@
#!/usr/bin/env python
# This script will format "settingtypes.txt" file found at the root
# of 3d_armor modpack into a format readable by LDoc.
import sys, os, errno, codecs
path = os.path.realpath(__file__)
script = os.path.basename(path)
d_root = os.path.dirname(os.path.dirname(path))
d_ldoc = os.path.join(d_root, ".ldoc")
f_settings = os.path.join(d_root, "settingtypes.txt")
if not os.path.isfile(f_settings):
print("settingtypes.txt does not exist")
sys.exit(errno.ENOENT)
i_stream = codecs.open(f_settings, "r", "utf-8")
data_in = i_stream.read()
i_stream.close()
data_in = data_in.replace("\r", "")
sets = data_in.split("\n\n")
for idx in reversed(range(len(sets))):
set = sets[idx]
lines = set.split("\n")
for idx2 in reversed(range(len(lines))):
li = lines[idx2].strip(" \t")
if li == "" or li[0] == "[":
lines.pop(idx2)
if len(lines) == 0:
sets.pop(idx)
else:
sets[idx] = "\n".join(lines)
filtered = []
for set in sets:
comment = False
lines = set.split("\n")
new_lines = []
for li in lines:
if li[0] == "#":
new_lines.append(li)
else:
new_lines.append(li)
filtered.append("\n".join(new_lines))
new_lines = []
settings = []
def parse_setting(set):
desc = []
setting = summary = stype = sdefault = soptions = None
for li in set.split("\n"):
if li[0] == "#":
desc.append("-- {}".format(li.lstrip(" #")))
else:
setting = li.split(" ")[0]
summary = li.split(")")[0].split("(")[-1]
li = li.split(")")[-1].strip()
rem = li.split(" ")
stype = rem[0]
rem.pop(0)
if len(rem) > 0:
sdefault = rem[0]
rem.pop(0)
if len(rem) > 0:
soptions = " ".join(rem)
if not setting:
return
st = "---"
if summary:
if summary[-1] != ".":
summary = "{}.".format(summary)
st = "{} {}".format(st, summary)
st = "{}\n--".format(st)
if len(desc) > 0:
st = "{}\n{}\n--".format(st, "\n".join(desc))
st = "{}\n-- @setting {}".format(st, setting)
if stype:
st = "{}\n-- @settype {}".format(st, stype)
if sdefault:
st = "{}\n-- @default {}".format(st, sdefault)
# TODO: add options
settings.append(st)
for f in filtered:
parse_setting(f)
outfile = os.path.join(d_ldoc, "settings.luadoc")
data_out = "\n--- 3D Armor Settings\n--\n-- @topic settings\n\n\n{}\n".format("\n\n".join(settings))
o_stream = codecs.open(outfile, "w", "utf-8")
if not o_stream:
print("ERROR: could not open file for writing: {}".format(outfile))
sys.exit(errno.EIO)
o_stream.write(data_out)
o_stream.close()
print("settings exported to\t{}".format(outfile))

View file

@ -0,0 +1,90 @@
#!/usr/bin/env python
# This script will parse source files for docstring.
import os, codecs
path = os.path.realpath(__file__)
script = os.path.basename(path)
d_root = os.path.dirname(os.path.dirname(path))
d_ldoc = os.path.join(d_root, ".ldoc")
armor_types = {
"armor": {"topic": "Armors", "values": []},
"helmet": {"topic": "Helmets", "values": []},
"chestplate": {"topic": "Chestplates", "values": []},
"leggings": {"topic": "Leggings", "values": []},
"boots": {"topic": "Boots", "values": []},
#"shield": {"topic": "Shields", "values": []},
}
def parse_file(f):
buffer = codecs.open(f, "r", "utf-8")
if not buffer:
print("ERROR: could not open file for reading: {}".format(f))
return
data_in = buffer.read()
buffer.close()
# format to LF (Unix)
data_in = data_in.replace("\r\n", "\n").replace("\r", "\n")
current_item = []
item_type = None
new_item = False
for li in data_in.split("\n"):
li = li.strip()
if li.startswith("---"):
new_item = True
elif not li.startswith("--"):
new_item = False
if new_item:
current_item.append(li)
if not item_type:
for a_type in armor_types:
if "@{} ".format(a_type) in li:
item_type = a_type
break
elif item_type and len(current_item):
armor_types[item_type]["values"].append("\n".join(current_item))
item_type = None
current_item = []
else:
current_item = []
to_parse = []
for obj in os.listdir(d_root):
fullpath = os.path.join(d_root, obj)
if not obj.startswith(".") and os.path.isdir(fullpath):
for root, dirs, files in os.walk(fullpath):
for f in files:
if f.endswith(".lua"):
to_parse.append(os.path.join(root, f))
for p in to_parse:
if not os.path.isfile(p):
print("ERROR: {} is not a file".format(p))
else:
parse_file(p)
for t in armor_types:
topic = armor_types[t]["topic"]
items = armor_types[t]["values"]
if len(items):
outfile = os.path.join(d_ldoc, "{}.luadoc".format(topic.lower()))
buffer = codecs.open(outfile, "w", "utf-8")
if not buffer:
print("ERROR: could not open file for writing: {}".format(outfile))
continue
buffer.write("\n--- 3D Armor {}\n--\n-- @topic {}\n\n\n{}\n".format(topic, topic.lower(), "\n\n".join(items)))
buffer.close()
print("{} exported to\t{}".format(topic.lower(), outfile))

View file

@ -396,6 +396,8 @@ If all of the above were made of material "wood" the player would recieve an ***
## Armor Functions
See also: [API Reference](https://minetest-mods.github.io/3d_armor/reference/)
### armor set_player_armor
armor:set_player_armor(player)

View file

@ -1,3 +1,82 @@
--- 3D Armor API
--
-- @topic api
local transparent_armor = minetest.settings:get_bool("armor_transparent", false)
--- Tables
--
-- @section tables
--- Armor definition table used for registering armor.
--
-- @table ArmorDef
-- @tfield string description Human-readable name/description.
-- @tfield string inventory_image Image filename used for icon.
-- @tfield table groups See: `ArmorDef.groups`
-- @tfield table armor_groups See: `ArmorDef.armor_groups`
-- @tfield table damage_groups See: `ArmorDef.damage_groups`
-- @see ItemDef
-- @usage local def = {
-- description = "Wood Helmet",
-- inventory_image = "3d_armor_inv_helmet_wood.png",
-- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
-- armor_groups = {fleshy=5},
-- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
-- }
--- Groups table.
--
-- General groups defining item behavior.
--
-- Some commonly used groups: ***armor\_&lt;type&gt;***, ***armor\_heal***, ***armor\_use***
--
-- @table ArmorDef.groups
-- @tfield int armor_type The armor type. "head", "torso", "hands", "shield", etc.
-- (**Note:** replace "type" with actual type).
-- @tfield int armor_heal Healing value of armor when equipped.
-- @tfield int armor_use Amount of uses/damage before armor "breaks".
-- @see groups
-- @usage groups = {
-- armor_head = 1,
-- armor_heal = 5,
-- armor_use = 2000,
-- flammable = 1,
-- }
--- Armor groups table.
--
-- Groups that this item is effective against when taking damage.
--
-- Some commonly used groups: ***fleshy***
--
-- @table ArmorDef.armor_groups
-- @usage armor_groups = {
-- fleshy = 5,
-- }
--- Damage groups table.
--
-- Groups that this item is effective on when used as a weapon/tool.
--
-- Some commonly used groups: ***cracky***, ***snappy***, ***choppy***, ***crumbly***, ***level***
--
-- @table ArmorDef.damage_groups
-- @see entity_damage_mechanism
-- @usage damage_groups = {
-- cracky = 3,
-- snappy = 2,
-- choppy = 3,
-- crumbly = 2,
-- level = 1,
-- }
--- @section end
-- support for i18n
local S = minetest.get_translator(minetest.get_current_modname())
@ -105,8 +184,23 @@ armor.config = {
punch_damage = true,
}
-- Armor Registration
--- Methods
--
-- @section methods
--- Registers a new armor item.
--
-- @function armor:register_armor
-- @tparam string name Armor item technical name (ex: "3d\_armor:helmet\_gold").
-- @tparam ArmorDef def Armor definition table.
-- @usage armor:register_armor("3d_armor:helmet_wood", {
-- description = "Wood Helmet",
-- inventory_image = "3d_armor_inv_helmet_wood.png",
-- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
-- armor_groups = {fleshy=5},
-- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
-- })
armor.register_armor = function(self, name, def)
def.on_secondary_use = function(itemstack, player)
return armor:equip(player, itemstack)
@ -132,6 +226,11 @@ armor.register_armor = function(self, name, def)
minetest.register_tool(name, def)
end
--- Registers a new armor group.
--
-- @function armor:register_armor_group
-- @tparam string group Group ID.
-- @tparam int base Base armor value.
armor.register_armor_group = function(self, group, base)
base = base or 100
self.registered_groups[group] = base
@ -140,38 +239,92 @@ armor.register_armor_group = function(self, group, base)
end
end
-- Armor callbacks
--- Armor Callbacks Registration
--
-- @section callbacks
--- Registers a callback for when player visuals are update.
--
-- @function armor:register_on_update
-- @tparam function func Function to be executed.
-- @see armor:update_player_visuals
-- @usage armor:register_on_update(function(player, index, stack)
-- -- code to execute
-- end)
armor.register_on_update = function(self, func)
if type(func) == "function" then
table.insert(self.registered_callbacks.on_update, func)
end
end
--- Registers a callback for when armor is equipped.
--
-- @function armor:register_on_equip
-- @tparam function func Function to be executed.
-- @usage armor:register_on_equip(function(player, index, stack)
-- -- code to execute
-- end)
armor.register_on_equip = function(self, func)
if type(func) == "function" then
table.insert(self.registered_callbacks.on_equip, func)
end
end
--- Registers a callback for when armor is unequipped.
--
-- @function armor:register_on_unequip
-- @tparam function func Function to be executed.
-- @usage armor:register_on_unequip(function(player, index, stack)
-- -- code to execute
-- end)
armor.register_on_unequip = function(self, func)
if type(func) == "function" then
table.insert(self.registered_callbacks.on_unequip, func)
end
end
--- Registers a callback for when armor is damaged.
--
-- @function armor:register_on_damage
-- @tparam function func Function to be executed.
-- @see armor:damage
-- @usage armor:register_on_damage(function(player, index, stack)
-- -- code to execute
-- end)
armor.register_on_damage = function(self, func)
if type(func) == "function" then
table.insert(self.registered_callbacks.on_damage, func)
end
end
--- Registers a callback for when armor is destroyed.
--
-- @function armor:register_on_destroy
-- @tparam function func Function to be executed.
-- @see armor:damage
-- @usage armor:register_on_destroy(function(player, index, stack)
-- -- code to execute
-- end)
armor.register_on_destroy = function(self, func)
if type(func) == "function" then
table.insert(self.registered_callbacks.on_destroy, func)
end
end
--- @section end
--- Methods
--
-- @section methods
--- Runs callbacks.
--
-- @function armor:run_callbacks
-- @tparam function callback Function to execute.
-- @tparam ObjectRef player First parameter passed to callback.
-- @tparam int index Second parameter passed to callback.
-- @tparam ItemStack stack Callback owner.
armor.run_callbacks = function(self, callback, player, index, stack)
if stack then
local def = stack:get_definition() or {}
@ -187,6 +340,10 @@ armor.run_callbacks = function(self, callback, player, index, stack)
end
end
--- Updates visuals.
--
-- @function armor:update_player_visuals
-- @tparam ObjectRef player
armor.update_player_visuals = function(self, player)
if not player then
return
@ -202,10 +359,10 @@ armor.update_player_visuals = function(self, player)
self:run_callbacks("on_update", player)
end
-- armor is not visible on player model if enabled
local transparent_armor = minetest.settings:get_bool("armor_transparent", false)
--- Sets player's armor attributes.
--
-- @function armor:set_player_armor
-- @tparam ObjectRef player
armor.set_player_armor = function(self, player)
local name, armor_inv = self:get_valid_player(player, "[set_player_armor]")
if not name then
@ -366,6 +523,13 @@ armor.set_player_armor = function(self, player)
self:update_player_visuals(player)
end
--- Action when armor is punched.
--
-- @function armor:punch
-- @tparam ObjectRef player Player wearing the armor.
-- @tparam ObjectRef hitter Entity attacking player.
-- @tparam[opt] int time_from_last_punch Time in seconds since last punch action.
-- @tparam[opt] table tool_capabilities See `entity_damage_mechanism`.
armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabilities)
local name, armor_inv = self:get_valid_player(player, "[punch]")
if not name then
@ -451,6 +615,13 @@ armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabili
self.def[name].count = count
end
--- Action when armor is damaged.
--
-- @function armor:damage
-- @tparam ObjectRef player
-- @tparam int index Inventory index where armor is equipped.
-- @tparam ItemStack stack Armor item receiving damaged.
-- @tparam int use Amount of wear to add to armor item.
armor.damage = function(self, player, index, stack, use)
local old_stack = ItemStack(stack)
local worn_armor = armor:get_weared_armor_elements(player)
@ -469,6 +640,11 @@ armor.damage = function(self, player, index, stack, use)
end
end
--- Get elements of equipped armor.
--
-- @function armor:get_weared_armor_elements
-- @tparam ObjectRef player
-- @treturn table List of equipped armors.
armor.get_weared_armor_elements = function(self, player)
local name, inv = self:get_valid_player(player, "[get_weared_armor]")
local weared_armor = {}
@ -485,40 +661,71 @@ armor.get_weared_armor_elements = function(self, player)
return weared_armor
end
--- Equips a piece of armor to a player.
--
-- @function armor:equip
-- @tparam ObjectRef player Player to whom item is equipped.
-- @tparam ItemStack itemstack Armor item to be equipped.
-- @treturn ItemStack Leftover item stack.
armor.equip = function(self, player, itemstack)
local name, armor_inv = self:get_valid_player(player, "[equip]")
local weared_armor = self:get_weared_armor_elements(player)
local armor_element = self:get_element(itemstack:get_name())
if name and armor_element then
if weared_armor[armor_element] ~= nil then
local index
for i=1, armor_inv:get_size("armor") do
local stack = armor_inv:get_stack("armor", i)
if self:get_element(stack:get_name()) == armor_element then
index = i
self:unequip(player, armor_element)
break
elseif not index and stack:is_empty() then
index = i
end
armor_inv:add_item("armor", itemstack:take_item())
end
local stack = itemstack:take_item()
armor_inv:set_stack("armor", index, stack)
self:run_callbacks("on_equip", player, index, stack)
self:set_player_armor(player)
self:save_armor_inventory(player)
end
return itemstack
end
--- Unequips a piece of armor from a player.
--
-- @function armor:unequip
-- @tparam ObjectRef player Player from whom item is removed.
-- @tparam string armor_element Armor type identifier associated with the item
-- to be removed ("head", "torso", "hands", "shield", "legs", "feet", etc.).
armor.unequip = function(self, player, armor_element)
local name, armor_inv = self:get_valid_player(player, "[unequip]")
local weared_armor = self:get_weared_armor_elements(player)
if not name or not weared_armor[armor_element] then
if not name then
return
end
local itemstack = armor_inv:remove_item("armor", ItemStack(weared_armor[armor_element]))
for i=1, armor_inv:get_size("armor") do
local stack = armor_inv:get_stack("armor", i)
if self:get_element(stack:get_name()) == armor_element then
armor_inv:set_stack("armor", i, "")
minetest.after(0, function()
local inv = player:get_inventory()
if inv:room_for_item("main", itemstack) then
inv:add_item("main", itemstack)
if inv:room_for_item("main", stack) then
inv:add_item("main", stack)
else
minetest.add_item(player:get_pos(), itemstack)
minetest.add_item(player:get_pos(), stack)
end
end)
self:run_callbacks("on_unequip", player, i, stack)
self:set_player_armor(player)
self:save_armor_inventory(player)
return
end
end
end
--- Removes all armor worn by player.
--
-- @function armor:remove_all
-- @tparam ObjectRef player
armor.remove_all = function(self, player)
local name, inv = self:get_valid_player(player, "[remove_all]")
if not name then
@ -531,6 +738,11 @@ end
local skin_mod
--- Retrieves player's current skin.
--
-- @function armor:get_player_skin
-- @tparam string name Player name.
-- @treturn string Skin filename.
armor.get_player_skin = function(self, name)
if (skin_mod == "skins" or skin_mod == "simple_skins") and skins.skins[name] then
return skins.skins[name]..".png"
@ -542,6 +754,10 @@ armor.get_player_skin = function(self, name)
return armor.default_skin..".png"
end
--- Updates skin.
--
-- @function armor:update_skin
-- @tparam string name Player name.
armor.update_skin = function(self, name)
minetest.after(0, function()
local pplayer = minetest.get_player_by_name(name)
@ -552,10 +768,19 @@ armor.update_skin = function(self, name)
end)
end
--- Adds preview for armor inventory.
--
-- @function armor:add_preview
-- @tparam string preview Preview image filename.
armor.add_preview = function(self, preview)
skin_previews[preview] = true
end
--- Retrieves preview for armor inventory.
--
-- @function armor:get_preview
-- @tparam string name Player name.
-- @treturn string Preview image filename.
armor.get_preview = function(self, name)
local preview = string.gsub(armor:get_player_skin(name), ".png", "_preview.png")
if skin_previews[preview] then
@ -564,6 +789,12 @@ armor.get_preview = function(self, name)
return "character_preview.png"
end
--- Retrieves armor formspec.
--
-- @function armor:get_armor_formspec
-- @tparam string name Player name.
-- @tparam[opt] bool listring Use `listring` formspec element (default: `false`).
-- @treturn string Formspec formatted string.
armor.get_armor_formspec = function(self, name, listring)
if armor.def[name].init_time == 0 then
return "label[0,0;Armor not initialized!]"
@ -586,6 +817,11 @@ armor.get_armor_formspec = function(self, name, listring)
return formspec
end
--- Retrieves element.
--
-- @function armor:get_element
-- @tparam string item_name
-- @return Armor element.
armor.get_element = function(self, item_name)
for _, element in pairs(armor.elements) do
if minetest.get_item_group(item_name, "armor_"..element) > 0 then
@ -594,6 +830,11 @@ armor.get_element = function(self, item_name)
end
end
--- Serializes armor inventory.
--
-- @function armor:serialize_inventory_list
-- @tparam table list Inventory contents.
-- @treturn string
armor.serialize_inventory_list = function(self, list)
local list_table = {}
for _, stack in ipairs(list) do
@ -602,6 +843,11 @@ armor.serialize_inventory_list = function(self, list)
return minetest.serialize(list_table)
end
--- Deserializes armor inventory.
--
-- @function armor:deserialize_inventory_list
-- @tparam string list_string Serialized inventory contents.
-- @treturn table
armor.deserialize_inventory_list = function(self, list_string)
local list_table = minetest.deserialize(list_string)
local list = {}
@ -611,6 +857,11 @@ armor.deserialize_inventory_list = function(self, list_string)
return list
end
--- Loads armor inventory.
--
-- @function armor:load_armor_inventory
-- @tparam ObjectRef player
-- @treturn bool
armor.load_armor_inventory = function(self, player)
local _, inv = self:get_valid_player(player, "[load_armor_inventory]")
if inv then
@ -624,6 +875,12 @@ armor.load_armor_inventory = function(self, player)
end
end
--- Saves armor inventory.
--
-- Inventory is stored in `PlayerMetaRef` string "3d\_armor\_inventory".
--
-- @function armor:save_armor_inventory
-- @tparam ObjectRef player
armor.save_armor_inventory = function(self, player)
local _, inv = self:get_valid_player(player, "[save_armor_inventory]")
if inv then
@ -633,10 +890,22 @@ armor.save_armor_inventory = function(self, player)
end
end
--- Updates inventory.
--
-- DEPRECATED: Legacy inventory support.
--
-- @function armor:update_inventory
-- @param player
armor.update_inventory = function(self, player)
-- DEPRECATED: Legacy inventory support
end
--- Sets inventory stack.
--
-- @function armor:set_inventory_stack
-- @tparam ObjectRef player
-- @tparam int i Armor inventory index.
-- @tparam ItemStack stack Armor item.
armor.set_inventory_stack = function(self, player, i, stack)
local _, inv = self:get_valid_player(player, "[set_inventory_stack]")
if inv then
@ -645,6 +914,13 @@ armor.set_inventory_stack = function(self, player, i, stack)
end
end
--- Checks for a player that can use armor.
--
-- @function armor:get_valid_player
-- @tparam ObjectRef player
-- @tparam string msg Additional info for log messages.
-- @treturn list Player name & armor inventory.
-- @usage local name, inv = armor:get_valid_player(player, "[equip]")
armor.get_valid_player = function(self, player, msg)
msg = msg or ""
if not player then
@ -666,6 +942,10 @@ armor.get_valid_player = function(self, player, msg)
return name, inv
end
--- Drops armor item at given position.
--
-- @tparam vector pos
-- @tparam ItemStack stack Armor item to be dropped.
armor.drop_armor = function(pos, stack)
local node = minetest.get_node_or_nil(pos)
if node then
@ -679,6 +959,8 @@ end
--- Allows skin mod to be set manually.
--
-- Useful for skin mod forks that do not use the same name.
--
-- @tparam string mod Name of skin mod. Recognized names are "simple\_skins", "u\_skins", & "wardrobe".
armor.set_skin_mod = function(mod)
skin_mod = mod
end

View file

@ -1,6 +1,23 @@
--- Registered armors.
--
-- @topic armor
-- support for i18n
local S = armor.get_translator
--- Admin Helmet
--
-- @helmet 3d_armor:helmet_admin
-- @img 3d_armor_inv_helmet_admin.png
-- @grp armor_head 1
-- @grp armor_heal 100
-- @grp armor_use 0
-- @grp armor_water 1
-- @grp not_in_creative_inventory 1
-- @armorgrp fleshy 100
armor:register_armor("3d_armor:helmet_admin", {
description = S("Admin Helmet"),
inventory_image = "3d_armor_inv_helmet_admin.png",
@ -12,6 +29,15 @@ armor:register_armor("3d_armor:helmet_admin", {
end,
})
--- Admin Chestplate
--
-- @chestplate 3d_armor:chestplate_admin
-- @img 3d_armor_inv_chestplate_admin.png
-- @grp armor_torso 1
-- @grp armor_heal 100
-- @grp armor_use 0
-- @grp not_in_creative_inventory 1
-- @armorgrp fleshy 100
armor:register_armor("3d_armor:chestplate_admin", {
description = S("Admin Chestplate"),
inventory_image = "3d_armor_inv_chestplate_admin.png",
@ -23,6 +49,15 @@ armor:register_armor("3d_armor:chestplate_admin", {
end,
})
--- Admin Leggings
--
-- @leggings 3d_armor:leggings_admin
-- @img 3d_armor_inv_leggings_admin.png
-- @grp armor_legs 1
-- @grp armor_heal 100
-- @grp armor_use 0
-- @grp not_in_creative_inventory 1
-- @armorgrp fleshy 100
armor:register_armor("3d_armor:leggings_admin", {
description = S("Admin Leggings"),
inventory_image = "3d_armor_inv_leggings_admin.png",
@ -34,6 +69,15 @@ armor:register_armor("3d_armor:leggings_admin", {
end,
})
--- Admin Boots
--
-- @boots 3d_armor:boots_admin
-- @img 3d_armor_inv_boots_admin.png
-- @grp armor_feet 1
-- @grp armor_heal 100
-- @grp armor_use 0
-- @grp not_in_creative_inventory 1
-- @armorgrp fleshy 100
armor:register_armor("3d_armor:boots_admin", {
description = S("Admin Boots"),
inventory_image = "3d_armor_inv_boots_admin.png",
@ -50,7 +94,28 @@ minetest.register_alias("adminhelmet", "3d_armor:helmet_admin")
minetest.register_alias("adminchestplate", "3d_armor:chestplate_admin")
minetest.register_alias("adminleggings", "3d_armor:leggings_admin")
--- Wood
--
-- Requires setting `armor_material_wood`.
--
-- @section wood
if armor.materials.wood then
--- Wood Helmet
--
-- @helmet 3d_armor:helmet_wood
-- @img 3d_armor_inv_helmet_wood.png
-- @grp armor_head 1
-- @grp armor_heal 0
-- @grp armor_use 2000
-- @grp flammable 1
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:helmet_wood", {
description = S("Wood Helmet"),
inventory_image = "3d_armor_inv_helmet_wood.png",
@ -58,6 +123,20 @@ if armor.materials.wood then
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
})
--- Wood Chestplate
--
-- @chestplate 3d_armor:chestplate_wood
-- @img 3d_armor_inv_chestplate_wood.png
-- @grp armor_torso 1
-- @grp armor_heal 0
-- @grp armor_use 2000
-- @grp flammable 1
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:chestplate_wood", {
description = S("Wood Chestplate"),
inventory_image = "3d_armor_inv_chestplate_wood.png",
@ -65,6 +144,20 @@ if armor.materials.wood then
armor_groups = {fleshy=10},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
})
--- Wood Leggings
--
-- @leggings 3d_armor:leggings_wood
-- @img 3d_armor_inv_leggings_wood.png
-- @grp armor_legs 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @grp flammable 1
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:leggings_wood", {
description = S("Wood Leggings"),
inventory_image = "3d_armor_inv_leggings_wood.png",
@ -72,6 +165,20 @@ if armor.materials.wood then
armor_groups = {fleshy=10},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
})
--- Wood Boots
--
-- @boots 3d_armor:boots_wood
-- @img 3d_armor_inv_boots_wood.png
-- @grp armor_feet 1
-- @grp armor_heal 0
-- @grp armor_use 2000
-- @grp flammable 1
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:boots_wood", {
description = S("Wood Boots"),
inventory_image = "3d_armor_inv_boots_wood.png",
@ -94,7 +201,27 @@ if armor.materials.wood then
end
end
--- Cactus
--
-- Requires setting `armor_material_cactus`.
--
-- @section cactus
if armor.materials.cactus then
--- Cactus Helmet
--
-- @helmet 3d_armor:helmet_cactus
-- @img 3d_armor_inv_helmet_cactus.png
-- @grp armor_head 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:helmet_cactus", {
description = S("Cactus Helmet"),
inventory_image = "3d_armor_inv_helmet_cactus.png",
@ -102,6 +229,19 @@ if armor.materials.cactus then
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
})
--- Cactus Chestplate
--
-- @chestplate 3d_armor:chestplate_cactus
-- @img 3d_armor_inv_chestplate_cactus.png
-- @grp armor_torso 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:chestplate_cactus", {
description = S("Cactus Chestplate"),
inventory_image = "3d_armor_inv_chestplate_cactus.png",
@ -109,6 +249,19 @@ if armor.materials.cactus then
armor_groups = {fleshy=10},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
})
--- Cactus Leggings
--
-- @leggings 3d_armor:leggings_cactus
-- @img 3d_armor_inv_leggings_cactus.png
-- @grp armor_legs 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:leggings_cactus", {
description = S("Cactus Leggings"),
inventory_image = "3d_armor_inv_leggings_cactus.png",
@ -116,6 +269,19 @@ if armor.materials.cactus then
armor_groups = {fleshy=10},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
})
--- Cactus Boots
--
-- @boots 3d_armor:boots_cactus
-- @img 3d_armor_inv_boots_cactus.png
-- @grp armor_feet 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("3d_armor:boots_cactus", {
description = S("Cactus Boots"),
inventory_image = "3d_armor_inv_boots_cactus.png",
@ -138,7 +304,29 @@ if armor.materials.cactus then
end
end
--- Steel
--
-- Requires setting `armor_material_steel`.
--
-- @section steel
if armor.materials.steel then
--- Steel Helmet
--
-- @helmet 3d_armor:helmet_steel
-- @img 3d_armor_inv_helmet_steel.png
-- @grp armor_head 1
-- @grp armor_heal 0
-- @grp armor_use 800
-- @grp physics_speed -0.01
-- @grp physica_gravity 0.01
-- @armorgrp fleshy 10
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:helmet_steel", {
description = S("Steel Helmet"),
inventory_image = "3d_armor_inv_helmet_steel.png",
@ -147,6 +335,21 @@ if armor.materials.steel then
armor_groups = {fleshy=10},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
})
--- Steel Chestplate
--
-- @chestplate 3d_armor:chestplate_steel
-- @img 3d_armor_inv_chestplate_steel.png
-- @grp armor_torso 1
-- @grp armor_heal 0
-- @grp armor_use 800
-- @grp physics_speed
-- @grp physics_gravity
-- @armorgrp fleshy
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:chestplate_steel", {
description = S("Steel Chestplate"),
inventory_image = "3d_armor_inv_chestplate_steel.png",
@ -155,6 +358,21 @@ if armor.materials.steel then
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
})
--- Steel Leggings
--
-- @leggings 3d_armor:leggings_steel
-- @img 3d_armor_inv_leggings_steel.png
-- @grp armor_legs 1
-- @grp armor_heal 0
-- @grp armor_use 800
-- @grp physics_speed -0.03
-- @grp physics_gravity 0.03
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:leggings_steel", {
description = S("Steel Leggings"),
inventory_image = "3d_armor_inv_leggings_steel.png",
@ -163,6 +381,21 @@ if armor.materials.steel then
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
})
--- Steel Boots
--
-- @boots 3d_armor:boots_steel
-- @img 3d_armor_inv_boots_steel.png
-- @grp armor_feet 1
-- @grp armor_heal 0
-- @grp armor_use 800
-- @grp physics_speed -0.01
-- @grp physics_gravity 0.01
-- @armorgrp fleshy 10
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:boots_steel", {
description = S("Steel Boots"),
inventory_image = "3d_armor_inv_boots_steel.png",
@ -173,7 +406,29 @@ if armor.materials.steel then
})
end
--- Bronze
--
-- Requires setting `armor_material_bronze`.
--
-- @section bronze
if armor.materials.bronze then
--- Bronze Helmet
--
-- @helmet 3d_armor:helmet_bronze
-- @img 3d_armor_inv_helmet_bronze.png
-- @grp armor_head 1
-- @grp armor_heal 6
-- @grp armor_use 400
-- @grp physics_speed -0.01
-- @grp physics_gravity 0.01
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:helmet_bronze", {
description = S("Bronze Helmet"),
inventory_image = "3d_armor_inv_helmet_bronze.png",
@ -182,6 +437,21 @@ if armor.materials.bronze then
armor_groups = {fleshy=10},
damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
})
--- Bronze Chestplate
--
-- @chestplate 3d_armor:chestplate_bronze
-- @img 3d_armor_inv_chestplate_bronze.png
-- @grp armor_torso 1
-- @grp armor_heal 6
-- @grp armor_use 400
-- @grp physics_speed -0.04
-- @grp physics_gravity 0.04
-- @armorgrp fleshy 15
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:chestplate_bronze", {
description = S("Bronze Chestplate"),
inventory_image = "3d_armor_inv_chestplate_bronze.png",
@ -190,6 +460,21 @@ if armor.materials.bronze then
armor_groups = {fleshy=15},
damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
})
--- Bronze Leggings
--
-- @leggings 3d_armor:leggings_bronze
-- @img 3d_armor_inv_leggings_bronze.png
-- @grp armor_legs 1
-- @grp armor_heal 6
-- @grp armor_use 400
-- @grp physics_speed -0.03
-- @grp physics_gravity 0.03
-- @armorgrp fleshy 15
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:leggings_bronze", {
description = S("Bronze Leggings"),
inventory_image = "3d_armor_inv_leggings_bronze.png",
@ -198,6 +483,21 @@ if armor.materials.bronze then
armor_groups = {fleshy=15},
damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
})
--- Bronze Boots
--
-- @boots 3d_armor:boots_bronze
-- @img 3d_armor_inv_boots_bronze.png
-- @grp armor_feet 1
-- @grp armor_heal 6
-- @grp armor_use 400
-- @grp physics_speed -0.01
-- @grp physics_gravity 0.01
-- @armorgrp fleshy 10
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("3d_armor:boots_bronze", {
description = S("Bronze Boots"),
inventory_image = "3d_armor_inv_boots_bronze.png",
@ -208,7 +508,26 @@ if armor.materials.bronze then
})
end
--- Diamond
--
-- Requires setting `armor_material_diamond`.
--
-- @section diamond
if armor.materials.diamond then
--- Diamond Helmet
--
-- @helmet 3d_armor:helmet_diamond
-- @img 3d_armor_inv_helmet_diamond.png
-- @grp armor_head 1
-- @grp armor_heal 12
-- @grp armor_use 200
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp choppy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:helmet_diamond", {
description = S("Diamond Helmet"),
inventory_image = "3d_armor_inv_helmet_diamond.png",
@ -216,6 +535,18 @@ if armor.materials.diamond then
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
})
--- Diamond Chestplate
--
-- @chestplate 3d_armor:chestplate_diamond
-- @img 3d_armor_inv_chestplate_diamond.png
-- @grp armor_torso 1
-- @grp armor_heal 12
-- @grp armor_use 200
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp choppy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:chestplate_diamond", {
description = S("Diamond Chestplate"),
inventory_image = "3d_armor_inv_chestplate_diamond.png",
@ -223,6 +554,18 @@ if armor.materials.diamond then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
})
--- Diamond Leggings
--
-- @leggings 3d_armor:leggings_diamond
-- @img 3d_armor_inv_leggings_diamond.png
-- @grp armor_legs 1
-- @grp armor_heal 12
-- @grp armor_use 200
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp choppy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:leggings_diamond", {
description = S("Diamond Leggings"),
inventory_image = "3d_armor_inv_leggings_diamond.png",
@ -230,6 +573,18 @@ if armor.materials.diamond then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
})
--- Diamond Boots
--
-- @boots 3d_armor:boots_diamond
-- @img 3d_armor_inv_boots_diamond.png
-- @grp armor_feet 1
-- @grp armor_heal 12
-- @grp armor_use 200
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp choppy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:boots_diamond", {
description = S("Diamond Boots"),
inventory_image = "3d_armor_inv_boots_diamond.png",
@ -239,7 +594,29 @@ if armor.materials.diamond then
})
end
--- Gold
--
-- Requires `armor_material_gold`.
--
-- @section gold
if armor.materials.gold then
--- Gold Helmet
--
-- @helmet 3d_armor:helmet_gold
-- @img 3d_armor_inv_helmet_gold.png
-- @grp armor_head 1
-- @grp armor_heal 6
-- @grp armor_use 300
-- @grp physics_speed -0.02
-- @grp physics_gravity 0.02
-- @armorgrp fleshy 10
-- @damagegrp cracky 1
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 3
-- @damagegrp level 2
armor:register_armor("3d_armor:helmet_gold", {
description = S("Gold Helmet"),
inventory_image = "3d_armor_inv_helmet_gold.png",
@ -248,6 +625,21 @@ if armor.materials.gold then
armor_groups = {fleshy=10},
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
})
--- Gold Chestplate
--
-- @chestplate 3d_armor:chestplate_gold
-- @img 3d_armor_inv_chestplate_gold.png
-- @grp armor_torso 1
-- @grp armor_heal 6
-- @grp armor_use 300
-- @grp physics_speed -0.05
-- @grp physics_gravity 0.05
-- @armorgrp fleshy 15
-- @damagegrp cracky 1
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 3
-- @damagegrp level 2
armor:register_armor("3d_armor:chestplate_gold", {
description = S("Gold Chestplate"),
inventory_image = "3d_armor_inv_chestplate_gold.png",
@ -256,6 +648,21 @@ if armor.materials.gold then
armor_groups = {fleshy=15},
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
})
--- Gold Leggings
--
-- @leggings 3d_armor:leggings_gold
-- @img 3d_armor_inv_leggings_gold.png
-- @grp armor_legs 1
-- @grp armor_heal 6
-- @grp armor_use 300
-- @grp physics_speed -0.04
-- @grp physics_gravity 0.04
-- @armorgrp fleshy 15
-- @damagegrp cracky 1
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 3
-- @damagegrp level 2
armor:register_armor("3d_armor:leggings_gold", {
description = S("Gold Leggings"),
inventory_image = "3d_armor_inv_leggings_gold.png",
@ -264,6 +671,21 @@ if armor.materials.gold then
armor_groups = {fleshy=15},
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
})
--- Gold Boots
--
-- @boots 3d_armor:boots_gold
-- @img 3d_armor_inv_boots_gold.png
-- @grp armor_feet 1
-- @grp armor_heal 6
-- @grp armor_use 300
-- @grp physics_speed -0.02
-- @grp physics_gravity 0.02
-- @armorgrp fleshy 10
-- @damagegrp cracky 1
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 3
-- @damagegrp level 2
armor:register_armor("3d_armor:boots_gold", {
description = S("Gold Boots"),
inventory_image = "3d_armor_inv_boots_gold.png",
@ -274,7 +696,25 @@ if armor.materials.gold then
})
end
--- Mithril
--
-- Requires `armor_material_mithril`.
--
-- @section mithril
if armor.materials.mithril then
--- Mithril Helmet
--
-- @helmet 3d_armor:helmet_mithril
-- @img 3d_armor_inv_helmet_mithril.png
-- @grp armor_head 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:helmet_mithril", {
description = S("Mithril Helmet"),
inventory_image = "3d_armor_inv_helmet_mithril.png",
@ -282,6 +722,17 @@ if armor.materials.mithril then
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Mithril Chestplate
--
-- @chestplate 3d_armor:chestplate_mithril
-- @img 3d_armor_inv_chestplate_mithril.png
-- @grp armor_torso 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:chestplate_mithril", {
description = S("Mithril Chestplate"),
inventory_image = "3d_armor_inv_chestplate_mithril.png",
@ -289,6 +740,17 @@ if armor.materials.mithril then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Mithril Leggings
--
-- @leggings 3d_armor:leggings_mithril
-- @img 3d_armor_inv_leggings_mithril.png
-- @grp armor_legs 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:leggings_mithril", {
description = S("Mithril Leggings"),
inventory_image = "3d_armor_inv_leggings_mithril.png",
@ -296,6 +758,17 @@ if armor.materials.mithril then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Mithril Boots
--
-- @boots 3d_armor:boots_mithril
-- @img 3d_armor_inv_boots_mithril.png
-- @grp armor_feet 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:boots_mithril", {
description = S("Mithril Boots"),
inventory_image = "3d_armor_inv_boots_mithril.png",
@ -305,7 +778,26 @@ if armor.materials.mithril then
})
end
--- Crystal
--
-- Requires `armor_material_crystal`.
--
-- @section crystal
if armor.materials.crystal then
--- Crystal Helmet
--
-- @helmet 3d_armor:helmet_crystal
-- @img 3d_armor_inv_helmet_crystal.png
-- @grp armor_head 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @grp armor_fire 1
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:helmet_crystal", {
description = S("Crystal Helmet"),
inventory_image = "3d_armor_inv_helmet_crystal.png",
@ -313,6 +805,18 @@ if armor.materials.crystal then
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Crystal Chestplate
--
-- @chestplate 3d_armor:chestplate_crystal
-- @img 3d_armor_inv_chestplate_crystal.png
-- @grp armor_torso 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @grp armor_fire 1
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:chestplate_crystal", {
description = S("Crystal Chestplate"),
inventory_image = "3d_armor_inv_chestplate_crystal.png",
@ -320,6 +824,18 @@ if armor.materials.crystal then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Crystal Leggings
--
-- @leggings 3d_armor:leggings_crystal
-- @img 3d_armor_inv_leggings_crystal.png
-- @grp armor_legs 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @grp armor_fire 1
-- @armorgrp fleshy 20
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:leggings_crystal", {
description = S("Crystal Leggings"),
inventory_image = "3d_armor_inv_leggings_crystal.png",
@ -327,6 +843,20 @@ if armor.materials.crystal then
armor_groups = {fleshy=20},
damage_groups = {cracky=2, snappy=1, level=3},
})
--- Crystal Boots
--
-- @boots 3d_armor:boots_crystal
-- @img 3d_armor_inv_boots_crystal.png
-- @grp armor_feet 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @grp physics_speed 1
-- @grp physics_jump 0.5
-- @grp armor_fire 1
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("3d_armor:boots_crystal", {
description = S("Crystal Boots"),
inventory_image = "3d_armor_inv_boots_crystal.png",
@ -337,6 +867,44 @@ if armor.materials.crystal then
})
end
--- Crafting
--
-- @section craft
--- Craft recipes for helmets, chestplates, leggings, boots, & shields.
--
-- @craft armor
-- @usage
-- Key:
-- - m: material
-- - wood: group:wood
-- - cactus: default:cactus
-- - steel: default:steel_ingot
-- - bronze: default:bronze_ingot
-- - diamond: default:diamond
-- - gold: default:gold_ingot
-- - mithril: moreores:mithril_ingot
-- - crystal: ethereal:crystal_ingot
--
-- helmet: chestplate: leggings:
-- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
-- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
-- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
-- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
-- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
-- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
-- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
--
-- boots: shield:
-- ┌───┬───┬───┐ ┌───┬───┬───┐
-- │ │ │ │ │ m │ m │ m │
-- ├───┼───┼───┤ ├───┼───┼───┤
-- │ m │ │ m │ │ m │ m │ m │
-- ├───┼───┼───┤ ├───┼───┼───┤
-- │ m │ │ m │ │ │ m │ │
-- └───┴───┴───┘ └───┴───┴───┘
for k, v in pairs(armor.materials) do
minetest.register_craft({
output = "3d_armor:helmet_"..k,

View file

@ -51,6 +51,8 @@ see armor.conf.example for all available options.
For mod installation instructions, please visit: http://wiki.minetest.com/wiki/Installing_Mods
[API Reference](https://minetest-mods.github.io/3d_armor/reference/)
[mod] Visible Wielded Items [wieldview]
---------------------------------------

View file

@ -1,2 +1 @@
name = minetest-3d_armor
description = Visible player armor & wielded items.

View file

@ -58,7 +58,7 @@ armor_punch_damage (Enable damage effects) bool true
# Enable migration of old armor inventories.
armor_migrate_old_inventory (Migrate old armor inventories) bool true
# Don't show armor on character model.
# Armor is not visible on player model when enabled.
armor_transparent (Transparent armor) bool false

View file

@ -1,3 +1,9 @@
--- 3D Armor Shields
--
-- @topic shields
-- support for i18n
local S = minetest.get_translator(minetest.get_current_modname())
@ -21,6 +27,14 @@ end
-- Regisiter Shields
--- Admin Shield
--
-- @shield shields:shield_admin
-- @img shields_inv_shield_admin.png
-- @grp armor_shield 1000
-- @grp armor_heal 100
-- @grp armor_use 0
-- @grp not_int_creative_inventory 1
armor:register_armor("shields:shield_admin", {
description = S("Admin Shield"),
inventory_image = "shields_inv_shield_admin.png",
@ -29,7 +43,22 @@ armor:register_armor("shields:shield_admin", {
minetest.register_alias("adminshield", "shields:shield_admin")
if armor.materials.wood then
--- Wood Shield
--
-- @shield shields:shield_wood
-- @img shields_inv_shield_wood.png
-- @grp armor_shield 1
-- @grp armor_heal 0
-- @grp armor_use 2000
-- @grp flammable 1
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("shields:shield_wood", {
description = S("Wooden Shield"),
inventory_image = "shields_inv_shield_wood.png",
@ -44,6 +73,19 @@ if armor.materials.wood then
play_sound_effect(player, "default_wood_footstep")
end,
})
--- Enhanced Wood Shield
--
-- @shield shields:shield_enhanced_wood
-- @img shields_inv_shield_enhanced_wood.png
-- @grp armor_shield 1
-- @grp armor_heal 0
-- @grp armor_use 2000
-- @armorgrp fleshy 8
-- @damagegrp cracky 3
-- @damagegrp snappy 2
-- @damagegrp choppy 3
-- @damagegrp crumbly 2
-- @damagegrp level 2
armor:register_armor("shields:shield_enhanced_wood", {
description = S("Enhanced Wood Shield"),
inventory_image = "shields_inv_shield_enhanced_wood.png",
@ -74,6 +116,19 @@ if armor.materials.wood then
end
if armor.materials.cactus then
--- Cactus Shield
--
-- @shield shields:shield_cactus
-- @img shields_inv_shield_cactus.png
-- @grp armor_shield 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 5
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 1
armor:register_armor("shields:shield_cactus", {
description = S("Cactus Shield"),
inventory_image = "shields_inv_shield_cactus.png",
@ -88,6 +143,19 @@ if armor.materials.cactus then
play_sound_effect(player, "default_wood_footstep")
end,
})
--- Enhanced Cactus Shield
--
-- @shield shields:shield_enhanced_cactus
-- @img shields_inv_shield_enhanced_cactus.png
-- @grp armor_shield 1
-- @grp armor_heal 0
-- @grp armor_use 1000
-- @armorgrp fleshy 8
-- @damagegrp cracky 3
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 2
-- @damagegrp level 2
armor:register_armor("shields:shield_enhanced_cactus", {
description = S("Enhanced Cactus Shield"),
inventory_image = "shields_inv_shield_enhanced_cactus.png",
@ -118,6 +186,21 @@ if armor.materials.cactus then
end
if armor.materials.steel then
--- Steel Shield
--
-- @shield shields:shield_steel
-- @img shields_inv_shield_steel.png
-- @grp armor_shield 1
-- @grp armor_heal 0
-- @grp armor_use 800
-- @grp physics_speed -0.03
-- @grp physics_gravity 0.03
-- @armorgrp fleshy 10
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("shields:shield_steel", {
description = S("Steel Shield"),
inventory_image = "shields_inv_shield_steel.png",
@ -136,6 +219,21 @@ if armor.materials.steel then
end
if armor.materials.bronze then
--- Bronze Shield
--
-- @shield shields:shield_bronze
-- @img shields_inv_shield_bronze.png
-- @grp armor_shield 1
-- @grp armor_heal 6
-- @grp armor_use 400
-- @grp physics_speed -0.03
-- @grp physics_gravity 0.03
-- @armorgrp fleshy 10
-- @damagegrp cracky 2
-- @damagegrp snappy 3
-- @damagegrp choppy 2
-- @damagegrp crumbly 1
-- @damagegrp level 2
armor:register_armor("shields:shield_bronze", {
description = S("Bronze Shield"),
inventory_image = "shields_inv_shield_bronze.png",
@ -154,6 +252,18 @@ if armor.materials.bronze then
end
if armor.materials.diamond then
--- Diamond Shield
--
-- @shield shields:shield_diamond
-- @img shields_inv_shield_diamond.png
-- @grp armor_shield 1
-- @grp armor_heal 12
-- @grp armor_use 200
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp choppy 1
-- @damagegrp level 3
armor:register_armor("shields:shield_diamond", {
description = S("Diamond Shield"),
inventory_image = "shields_inv_shield_diamond.png",
@ -171,6 +281,21 @@ if armor.materials.diamond then
end
if armor.materials.gold then
--- Gold Shield
--
-- @shield shields:shield_gold
-- @img shields_inv_shield_gold.png
-- @grp armor_shield 1
-- @grp armor_heal 6
-- @grp armor_use 300
-- @grp physics_speed -0.04
-- @grp physics_gravity 0.04
-- @armorgrp fleshy 10
-- @damagegrp cracky 1
-- @damagegrp snappy 2
-- @damagegrp choppy 2
-- @damagegrp crumbly 3
-- @damagegrp level 2
armor:register_armor("shields:shield_gold", {
description = S("Gold Shield"),
inventory_image = "shields_inv_shield_gold.png",
@ -189,6 +314,17 @@ if armor.materials.gold then
end
if armor.materials.mithril then
--- Mithril Shield
--
-- @shield shields:shield_mithril
-- @img shields_inv_shield_mithril.png
-- @grp armor_shield 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("shields:shield_mithril", {
description = S("Mithril Shield"),
inventory_image = "shields_inv_shield_mithril.png",
@ -206,6 +342,18 @@ if armor.materials.mithril then
end
if armor.materials.crystal then
--- Crystal Shield
--
-- @shield shields:shield_crystal
-- @img shields_inv_shield_crystal.png
-- @grp armor_shield 1
-- @grp armor_heal 12
-- @grp armor_use 100
-- @grp armor_fire 1
-- @armorgrp fleshy 15
-- @damagegrp cracky 2
-- @damagegrp snappy 1
-- @damagegrp level 3
armor:register_armor("shields:shield_crystal", {
description = S("Crystal Shield"),
inventory_image = "shields_inv_shield_crystal.png",

View file

@ -8,7 +8,7 @@ https://forum.minetest.net/viewtopic.php?id=8890
Changelog:
- 1.0 - Added glazed terracotta blocks when you cook baked clay in furnace (thanks D3monPixel)
- 1.0 - Re-Added glazed terracotta blocks when you cook baked clay in furnace (thanks Amara2_MK), added support for sofar's flowerpot mod
- 0.9 - Baked clay now works in the technic cnc machine
- 0.8 - Cooking clay block in furnace gives natural baked clay which you can dye
- 0.7 - Added support for stairsplus so that stairs are registered properly

View file

@ -3,3 +3,4 @@ stairs
moreblocks?
lucky_block?
technic_cnc?
flowerpot?

View file

@ -131,24 +131,7 @@ for _, clay in pairs(clay) do
end
end
-- special light blue glazed terracotta block
local texture = "baked_clay_terracotta_light_blue.png"
minetest.register_node("bakedclay:terracotta_light_blue", {
description = "Light Blue Glazed Terracotta",
tiles = {
texture .. "",
texture .. "",
texture .. "^[transformR180",
texture .. "",
texture .. "^[transformR270",
texture .. "^[transformR90",
},
paramtype2 = "facedir",
groups = {cracky = 3, terracotta = 1},
sounds = default.node_sound_stone_defaults(),
on_place = minetest.rotate_node
})
minetest.register_alias("bakedclay:terracotta_light_blue", "bakedclay:terracotta_cyan")
-- cook clay block into white baked clay
@ -365,7 +348,6 @@ p = "bakedclay:terracotta_"
lucky_block:add_blocks({
{"nod", "default:chest", 0, {
{name = p.."light_blue", max = 20},
{name = p.."black", max = 20},
{name = p.."blue", max = 20},
{name = p.."brown", max = 20},
@ -423,5 +405,14 @@ end
end
-- flowerpot mod
if minetest.get_modpath("flowerpot") then
flowerpot.register_node("bakedclay:delphinium")
flowerpot.register_node("bakedclay:thistle")
flowerpot.register_node("bakedclay:lazarus")
flowerpot.register_node("bakedclay:mannagrass")
end
print ("[MOD] Baked Clay loaded")

View file

@ -21,5 +21,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Textures by D3monPixel (https://mcpedl.com/better-glazed-terracotta-pack)
Textures by Amara2_MK (Creative Commons)
https://www.curseforge.com/minecraft/texture-packs/glazed-terracotta-revamp
baked_clay_terracotta*.png

View file

@ -1,4 +1,4 @@
name = bakedclay
depends = default
optional_depends = stairs, moreblocks, lucky_block, technic_cnc
optional_depends = stairs, moreblocks, lucky_block, technic_cnc, flowerpot
description = Adds the ability to bake clay into blocks and colour them with dye.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 718 B

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 B

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 606 B

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 512 B

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 530 B

View file

@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
mobs = {
mod = "redo",
version = "20210722",
version = "20210801",
intllib = S,
invis = minetest.global_exists("invisibility") and invisibility or {}
}
@ -2703,6 +2703,12 @@ function mob_class:do_states(dtime)
local obj = minetest.add_entity(p, self.arrow)
local ent = obj:get_luaentity()
local amount = (vec.x * vec.x + vec.y * vec.y + vec.z * vec.z) ^ 0.5
-- check for custom override for arrow
if self.arrow_override then
self.arrow_override(ent)
end
local v = ent.velocity or 1 -- or set to default
ent.switch = 1
@ -3263,7 +3269,7 @@ function mob_class:mob_activate(staticdata, def, dtime)
self.object:set_texture_mod(self.texture_mods)
-- set 5.x flag to remove monsters when map area unloaded
if remove_far and self.type == "monster" then
if remove_far and self.type == "monster" and not self.tamed then
self.static_save = false
end
@ -3573,6 +3579,7 @@ minetest.register_entity(name, setmetatable({
armor = def.armor,
on_rightclick = def.on_rightclick,
arrow = def.arrow,
arrow_override = def.arrow_override,
shoot_interval = def.shoot_interval,
sounds = def.sounds,
animation = def.animation,
@ -4693,6 +4700,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
end
self.tamed = true
self.static_save = true
if not self.owner or self.owner == "" then
self.owner = clicker:get_player_name()

View file

@ -123,6 +123,8 @@ functions needed for the mob to work properly which contains the following:
continue chasing.
'arrow' holds the pre-defined arrow object to shoot when
attacking.
'arrow_override' function that allows tweaking of arrow entity from
inside mob definition (self) passed to function.
'dogshoot_switch' allows switching between attack types by using timers
(1 for shoot, 2 for dogfight)
'dogshoot_count_max' contains how many seconds before switching from

View file

@ -23,6 +23,7 @@ Lucky Blocks: 9
Changelog:
- 1.56 - Added arrow_override function to mob definition to tweak arrow entity settings, tamed monsters no longer despawn when outside loaded map area.
- 1.55 - Add 'peaceful_player' privelage and setting so mobs don't attack specific players (thanks sfence), add support for MarkBu's pathfinder mod, remove need for default mod
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added.
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded.

View file

@ -1,17 +1,23 @@
# morelights
[![ContentDB](https://content.minetest.net/packages/random_geek/morelights/shields/downloads/)](https://content.minetest.net/packages/random_geek/morelights/)
[![](https://img.shields.io/badge/Minetest%20Forums-Morelights-4E9A06)](https://forum.minetest.net/viewtopic.php?f=11&t=21464)
Minetest mod adding additional lighting nodes.
![Screenshot](screenshot.png)
The Morelights modpack adds over 30 lighting and accessory nodes to suit various styles of builds, both interior and exterior.
Includes basic light blocks, modern and historical-style lighting, and customizable street lamps.
The Morelights modpack adds over 30 lighting and accessory nodes to suit
various styles of builds, both interior and exterior. Includes basic light
blocks, modern and historical-style lighting, and customizable street lamps.
Some nodes (ceiling lights, bar lights, poles) can be rotated to serve different purposes.
The modpack is lightweight, with only about **60 kB** of media, including 3D
models.
The modpack currently supports both Minetest Game and MineClone 2.
Some nodes (ceiling lights, bar lights, poles) can be rotated to serve
different purposes.
Morelights currently supports both Minetest Game and MineClone 2.
## Craft Recipes
@ -19,5 +25,5 @@ Craft recipes for all items can be found in [crafts.md](crafts.md).
## Licenses
Source code is licensed under the LGPL v3.0 license.
All other media and assets are licensed under the CC BY-SA 4.0 license.
Source code is licensed under the LGPL v3.0 license. All other media and assets
are licensed under the CC BY-SA 4.0 license.

View file

@ -1,2 +1,2 @@
name = mp_morelights
name = morelights
description = A lightweight modpack providing flexible interior and exterior lighting options for different styles of builds.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -21,7 +21,12 @@ do
},
paramtype = "light",
light_source = 12,
groups = {cracky = 2, oddly_breakable_by_hand = 3, handy = 1},
groups = {
cracky = 2,
oddly_breakable_by_hand = 3,
handy = 1,
soil = 1,
},
_mcl_hardness = 0.3,
sounds = morelights.sounds.glass
}

View file

@ -1,100 +1,115 @@
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T18:42:48Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.79 (sub 0) OBJ File: 'modern_can_2.blend'
# www.blender.org
o Cylinder_Cylinder.002
v -0.051777 -0.000000 -0.125000
v -0.051777 0.500000 -0.125000
v 0.051777 0.500000 -0.125000
v 0.051777 -0.000000 -0.125000
v 0.125000 -0.000000 0.051777
v 0.051777 -0.000000 0.125000
v -0.051777 -0.000000 0.125000
v -0.125000 -0.000000 0.051777
v -0.125000 -0.000000 -0.051777
v -0.100000 -0.000000 -0.041421
v -0.100000 -0.000000 0.041421
v -0.041421 -0.000000 0.100000
v 0.041421 -0.000000 0.100000
v 0.100000 -0.000000 0.041421
v 0.125000 -0.000000 -0.051777
v 0.100000 -0.000000 -0.041421
v 0.041421 -0.000000 -0.100000
v -0.041421 -0.000000 -0.100000
v -0.125000 0.500000 -0.051777
v -0.125000 0.500000 0.051777
v -0.051777 0.500000 0.125000
v 0.051777 0.500000 0.125000
v 0.125000 0.500000 0.051777
v 0.125000 0.500000 -0.051777
v 0.041421 0.125000 -0.100000
v -0.041421 0.125000 -0.100000
v -0.100000 0.125000 -0.041421
v 0.100000 0.125000 -0.041421
v 0.100000 0.125000 0.041421
v 0.041421 0.125000 0.100000
v -0.041421 0.125000 0.100000
v -0.100000 0.125000 0.041421
vt 0.375000 0.500000
vt 0.375000 1.000000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.500000 0.500000
vt 0.500000 1.000000
vt 0.239277 0.937500
vt 0.135723 0.937500
vt 0.062500 0.864257
vt 0.062500 0.760704
vt 0.135723 0.687500
vt 0.239277 0.687500
vt 0.312500 0.760704
vt 0.312500 0.864257
vt 0.125000 1.000000
vt 0.125000 0.500000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.875000 1.000000
vt 0.875000 0.500000
vt 0.750000 1.000000
vt 0.750000 0.500000
vt 0.625000 1.000000
vt 0.625000 0.500000
vt 0.375000 0.437500
vt 0.250000 0.437500
vt 0.250000 0.312500
vt 0.375000 0.312500
vt 0.500000 0.437500
vt 0.500000 0.312500
vt 0.176777 0.000000
vt 0.250000 0.073223
vt 0.250000 0.176777
vt 0.176777 0.250000
vt 0.073223 0.250000
vt 0.000000 0.176777
vt 0.000000 0.073223
vt 0.073223 0.000000
vt 0.125000 0.437500
vt 0.125000 0.312500
vt 0.625000 0.437500
vt 0.625000 0.312500
vt 0.750000 0.437500
vt 0.750000 0.312500
vt 0.875000 0.437500
vt 0.875000 0.312500
vt 1.000000 0.437500
vt 1.000000 0.312500
vt 0.000000 0.437500
vt 0.000000 0.312500
vn 0.0000 0.0000 -1.0000
vn -0.7071 0.0000 -0.7071
vn 0.0000 1.0000 -0.0000
vn 0.7071 0.0000 -0.7071
vn 1.0000 0.0000 0.0000
vn 0.7071 0.0000 0.7071
vn -0.0000 0.0000 1.0000
vn -0.7071 0.0000 0.7071
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
# vertices [32]
v -0.051777 0 -0.125
v -0.051777 0.5 -0.125
v 0.051777 0.5 -0.125
v 0.051777 0 -0.125
v 0.125 0 0.051777
v 0.051777 0 0.125
v -0.051777 0 0.125
v -0.125 0 0.051777
v -0.125 0 -0.051777
v -0.1 0 -0.041421
v -0.1 0 0.041421
v -0.041421 0 0.1
v 0.041421 0 0.1
v 0.1 0 0.041421
v 0.125 0 -0.051777
v 0.1 0 -0.041421
v 0.041421 0 -0.1
v -0.041421 0 -0.1
v -0.125 0.5 -0.051777
v -0.125 0.5 0.051777
v -0.051777 0.5 0.125
v 0.051777 0.5 0.125
v 0.125 0.5 0.051777
v 0.125 0.5 -0.051777
v 0.041421 0.125 -0.1
v -0.041421 0.125 -0.1
v -0.1 0.125 -0.041421
v 0.1 0.125 -0.041421
v 0.1 0.125 0.041421
v 0.041421 0.125 0.1
v -0.041421 0.125 0.1
v -0.1 0.125 0.041421
# normals [10]
vn 0 0 -1
vn -0.7071 0 -0.7071
vn 0 1 0
vn 0.7071 0 -0.7071
vn 1 0 0
vn 0.7071 0 0.7071
vn 0 0 1
vn -0.7071 0 0.7071
vn -1 0 0
vn 0 -1 0
# uvs [52]
vt 0.375 0.5
vt 0.375 1
vt 0.25 1
vt 0.25 0.5
vt 0.5 0.5
vt 0.5 1
vt 0.239277 0.9375
vt 0.135723 0.9375
vt 0.0625 0.864257
vt 0.0625 0.760704
vt 0.135723 0.6875
vt 0.239277 0.6875
vt 0.3125 0.760704
vt 0.3125 0.864257
vt 0.125 1
vt 0.125 0.5
vt 0 1
vt 0 0.5
vt 1 0.5
vt 1 1
vt 0.875 1
vt 0.875 0.5
vt 0.75 1
vt 0.75 0.5
vt 0.625 1
vt 0.625 0.5
vt 0.375 0.4375
vt 0.25 0.4375
vt 0.25 0.3125
vt 0.375 0.3125
vt 0.5 0.4375
vt 0.5 0.3125
vt 0.176777 0
vt 0.25 0.073223
vt 0.25 0.176777
vt 0.176777 0.25
vt 0.073223 0.25
vt 0 0.176777
vt 0 0.073223
vt 0.073223 0
vt 0.125 0.4375
vt 0.125 0.3125
vt 0.625 0.4375
vt 0.625 0.3125
vt 0.75 0.4375
vt 0.75 0.3125
vt 0.875 0.4375
vt 0.875 0.3125
vt 1 0.4375
vt 1 0.3125
vt 0 0.4375
vt 0 0.3125
# objects [1]
o CanLight
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 9/5/2 19/6/2 2/2/2 1/1/2
@ -122,3 +137,4 @@ f 14/49/10 5/19/10 6/22/10 13/47/10
f 13/47/10 6/22/10 7/24/10 12/45/10
f 7/24/10 8/26/10 11/43/10 12/45/10
f 11/43/10 8/26/10 9/5/10 10/31/10

View file

@ -1,204 +1,146 @@
# Blender v2.79 (sub 0) OBJ File: 'modern_tablelamp_joined.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T06:56:07Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o support_Plane.001
v 0.031250 0.312500 0.031250
v 0.218750 0.312500 0.031250
v 0.031250 0.343750 0.000000
v 0.218750 0.343750 0.000000
v 0.031250 0.312500 -0.031250
v 0.218750 0.312500 -0.031250
v -0.218750 0.312500 0.031250
v -0.031250 0.312500 0.031250
v -0.218750 0.343750 0.000000
v -0.031250 0.343750 0.000000
v -0.218750 0.312500 -0.031250
v -0.031250 0.312500 -0.031250
vt 0.531250 0.468748
vt 0.718750 0.468748
vt 0.718750 0.499998
vt 0.531250 0.499998
vt 0.718750 0.531248
vt 0.531250 0.531248
vt 0.281250 0.468748
vt 0.468750 0.468748
vt 0.468750 0.499998
vt 0.281250 0.499998
vt 0.468750 0.531248
vt 0.281250 0.531248
vn 0.0000 0.7071 0.7071
vn 0.0000 0.7071 -0.7071
g Material.000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 6/5/2 5/6/2
f 7/7/1 8/8/1 10/9/1 9/10/1
f 9/10/2 10/9/2 12/11/2 11/12/2
o pole_Cube.007
v -0.031250 -0.437500 0.031250
v -0.031250 0.375000 0.031250
v -0.031250 -0.437500 -0.031250
v -0.031250 0.375000 -0.031250
v 0.031250 -0.437500 0.031250
v 0.031250 0.375000 0.031250
v 0.031250 -0.437500 -0.031250
v 0.031250 0.375000 -0.031250
vt 0.312500 0.062500
vt 0.312500 0.875000
vt 0.250000 0.875000
vt 0.250000 0.062500
vt 0.312500 0.062500
vt 0.312500 0.875000
vt 0.250000 0.875000
vt 0.250000 0.062500
vt 0.312500 0.062500
vt 0.312500 0.875000
vt 0.250000 0.875000
vt 0.250000 0.062500
vt 0.312501 0.062500
vt 0.312499 0.875000
vt 0.250000 0.875000
vt 0.250000 0.062500
vt 0.312500 0.531250
vt 0.250000 0.531250
vt 0.250000 0.468750
vt 0.312500 0.468750
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
g Material.000
s off
f 13/13/3 14/14/3 16/15/3 15/16/3
f 15/17/4 16/18/4 20/19/4 19/20/4
f 19/21/5 20/22/5 18/23/5 17/24/5
f 17/25/6 18/26/6 14/27/6 13/28/6
f 20/29/7 16/30/7 14/31/7 18/32/7
o base_Cube.006
v -0.187500 -0.500000 0.187500
v -0.187500 -0.437500 0.187500
v -0.187500 -0.500000 -0.187500
v -0.187500 -0.437500 -0.187500
v 0.187500 -0.500000 0.187500
v 0.187500 -0.437500 0.187500
v 0.187500 -0.500000 -0.187500
v 0.187500 -0.437500 -0.187500
vt 0.312500 0.062500
vt 0.312500 0.000000
vt 0.687500 0.000000
vt 0.687500 0.062500
vt 0.312500 0.062500
vt 0.312500 0.000000
vt 0.687500 0.000000
vt 0.687500 0.062500
vt 0.687500 0.000000
vt 0.687500 0.062500
vt 0.312500 0.062500
vt 0.312500 0.000000
vt 0.687500 0.000000
vt 0.687500 0.062500
vt 0.312500 0.062500
vt 0.312500 0.000000
vt 0.687500 0.312500
vt 0.687500 0.687500
vt 0.312500 0.687500
vt 0.312500 0.312500
vt 0.687500 0.312500
vt 0.687500 0.687500
vt 0.312500 0.687500
vt 0.312500 0.312500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
g Material.000
s off
f 21/33/8 22/34/8 24/35/8 23/36/8
f 23/37/9 24/38/9 28/39/9 27/40/9
f 27/41/10 28/42/10 26/43/10 25/44/10
f 25/45/11 26/46/11 22/47/11 21/48/11
f 23/49/12 27/50/12 25/51/12 21/52/12
f 28/53/13 24/54/13 22/55/13 26/56/13
o shade_Cube.005
v -0.250000 -0.062500 0.250000
v -0.250000 0.437500 0.250000
v -0.250000 -0.062500 -0.250000
v -0.250000 0.437500 -0.250000
v 0.250000 -0.062500 0.250000
v 0.250000 0.437500 0.250000
v 0.250000 -0.062500 -0.250000
v 0.250000 0.437500 -0.250000
v -0.218750 -0.062500 0.218750
v -0.218750 0.437500 0.218750
v -0.218750 -0.062500 -0.218750
v -0.218750 0.437500 -0.218750
v 0.218750 -0.062500 0.218750
v 0.218750 0.437500 0.218750
v 0.218750 -0.062500 -0.218750
v 0.218750 0.437500 -0.218750
vt 0.000000 0.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.062500 0.000000
vt 0.062500 1.000000
vt 0.937500 1.000000
vt 0.937500 0.000000
vt 0.062500 0.000000
vt 0.062500 1.000000
vt 0.937500 1.000000
vt 0.937500 0.000000
vt 0.062500 0.000000
vt 0.062500 1.000000
vt 0.937500 1.000000
vt 0.937500 0.000000
vt 0.062500 0.000000
vt 0.062500 1.000000
vt 0.937500 1.000000
vt 0.937500 0.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 0.937500 0.062500
vt 0.062500 0.062500
vt 0.062500 0.937500
vt 0.937500 0.937500
vt 0.000000 1.000000
vt 0.062500 0.062500
vt 0.062500 0.937500
vt 0.937500 0.062500
vt 1.000000 1.000000
vt 0.937500 0.937500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
g Material.001
s off
f 29/57/14 30/58/14 32/59/14 31/60/14
f 31/61/15 32/62/15 36/63/15 35/64/15
f 35/64/16 36/63/16 34/65/16 33/66/16
f 33/67/17 34/68/17 30/58/17 29/57/17
f 39/69/15 40/70/15 44/71/15 43/72/15
f 37/73/14 38/74/14 40/75/14 39/76/14
f 43/77/16 44/78/16 42/79/16 41/80/16
f 41/81/17 42/82/17 38/83/17 37/84/17
f 30/85/18 34/86/18 42/87/18 38/88/18
f 32/62/18 30/85/18 38/88/18 40/89/18
f 36/63/18 32/62/18 40/89/18 44/90/18
f 34/86/18 36/63/18 44/90/18 42/87/18
f 29/91/19 31/61/19 39/92/19 37/93/19
f 31/61/19 35/64/19 43/94/19 39/92/19
f 35/64/19 33/95/19 41/96/19 43/94/19
f 33/95/19 29/91/19 37/93/19 41/96/19
# vertices [44]
v -0.1875 -0.5 0.1875
v -0.1875 -0.4375 0.1875
v -0.1875 -0.4375 -0.1875
v -0.1875 -0.5 -0.1875
v 0.1875 -0.4375 -0.1875
v 0.1875 -0.5 -0.1875
v 0.1875 -0.4375 0.1875
v 0.1875 -0.5 0.1875
v 0.03125 0.3125 0.03125
v 0.21875 0.3125 0.03125
v 0.21875 0.34375 0
v 0.03125 0.34375 0
v 0.21875 0.3125 -0.03125
v 0.03125 0.3125 -0.03125
v -0.21875 0.3125 0.03125
v -0.03125 0.3125 0.03125
v -0.03125 0.34375 0
v -0.21875 0.34375 0
v -0.03125 0.3125 -0.03125
v -0.21875 0.3125 -0.03125
v -0.03125 -0.4375 0.03125
v -0.03125 0.375 0.03125
v -0.03125 0.375 -0.03125
v -0.03125 -0.4375 -0.03125
v 0.03125 0.375 -0.03125
v 0.03125 -0.4375 -0.03125
v 0.03125 0.375 0.03125
v 0.03125 -0.4375 0.03125
v -0.25 -0.0625 0.25
v -0.25 0.4375 0.25
v -0.25 0.4375 -0.25
v -0.25 -0.0625 -0.25
v 0.25 0.4375 -0.25
v 0.25 -0.0625 -0.25
v 0.25 0.4375 0.25
v 0.25 -0.0625 0.25
v -0.21875 -0.0625 -0.21875
v -0.21875 0.4375 -0.21875
v 0.21875 0.4375 -0.21875
v 0.21875 -0.0625 -0.21875
v -0.21875 -0.0625 0.21875
v -0.21875 0.4375 0.21875
v 0.21875 0.4375 0.21875
v 0.21875 -0.0625 0.21875
# normals [8]
vn -1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0.7071 0.7071
vn 0 0.7071 -0.7071
# uvs [39]
vt 0.3125 0.0625
vt 0.3125 0
vt 0.6875 0
vt 0.6875 0.0625
vt 0.6875 0.3125
vt 0.6875 0.6875
vt 0.3125 0.6875
vt 0.3125 0.3125
vt 0.53125 0.46875
vt 0.71875 0.46875
vt 0.71875 0.5
vt 0.53125 0.5
vt 0.71875 0.53125
vt 0.53125 0.53125
vt 0.28125 0.46875
vt 0.46875 0.46875
vt 0.46875 0.5
vt 0.28125 0.5
vt 0.46875 0.53125
vt 0.28125 0.53125
vt 0.3125 0.875
vt 0.25 0.875
vt 0.25 0.0625
vt 0.3125 0.53125
vt 0.25 0.53125
vt 0.25 0.46875
vt 0.3125 0.46875
vt 0 0
vt 0 1
vt 1 1
vt 1 0
vt 0.0625 0
vt 0.0625 1
vt 0.9375 1
vt 0.9375 0
vt 0.9375 0.0625
vt 0.0625 0.0625
vt 0.0625 0.9375
vt 0.9375 0.9375
# objects [2]
g LampBase
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/1/2 3/2/2 5/3/2 6/4/2
f 6/3/3 5/4/3 7/1/3 8/2/3
f 8/3/4 7/4/4 2/1/4 1/2/4
f 4/5/5 6/6/5 8/7/5 1/8/5
f 5/5/6 3/6/6 2/7/6 7/8/6
f 9/9/7 10/10/7 11/11/7 12/12/7
f 12/12/8 11/11/8 13/13/8 14/14/8
f 15/15/7 16/16/7 17/17/7 18/18/7
f 18/18/8 17/17/8 19/19/8 20/20/8
f 21/1/1 22/21/1 23/22/1 24/23/1
f 24/1/2 23/21/2 25/22/2 26/23/2
f 26/1/3 25/21/3 27/22/3 28/23/3
f 28/1/4 27/21/4 22/22/4 21/23/4
f 25/24/6 23/25/6 22/26/6 27/27/6
g LampShade
s 1
f 29/28/1 30/29/1 31/30/1 32/31/1
f 32/28/2 31/29/2 33/30/2 34/31/2
f 34/31/3 33/30/3 35/29/3 36/28/3
f 36/31/4 35/30/4 30/29/4 29/28/4
f 37/32/2 38/33/2 39/34/2 40/35/2
f 41/32/1 42/33/1 38/34/1 37/35/1
f 40/32/3 39/33/3 43/34/3 44/35/3
f 44/32/4 43/33/4 42/34/4 41/35/4
f 30/28/6 35/31/6 43/36/6 42/37/6
f 31/29/6 30/28/6 42/37/6 38/38/6
f 33/30/6 31/29/6 38/38/6 39/39/6
f 35/31/6 33/30/6 39/39/6 43/36/6
f 29/29/5 32/28/5 37/37/5 41/38/5
f 32/28/5 34/31/5 40/36/5 37/37/5
f 34/31/5 36/30/5 44/39/5 40/36/5
f 36/30/5 29/29/5 41/38/5 44/39/5

View file

@ -1,132 +1,115 @@
# Blender v2.79 (sub 0) OBJ File: 'walllamp.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T19:07:59Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Cube.003
v 0.031250 -0.343750 0.437500
v 0.031250 -0.281250 0.437500
v -0.031250 -0.343750 0.437500
v -0.031250 -0.281250 0.437500
v 0.031250 -0.343750 0.218750
v 0.031250 -0.281250 0.281250
v -0.031250 -0.343750 0.218750
v -0.031250 -0.281250 0.281250
v 0.031250 -0.250000 0.218750
v 0.031250 -0.250000 0.281250
v -0.031250 -0.250000 0.218750
v -0.031250 -0.250000 0.281250
vt 0.031250 0.062500
vt 0.031250 0.125000
vt 0.187500 0.125000
vt 0.250000 0.062500
vt 0.187500 0.156250
vt 0.250000 0.156250
vt 0.250000 0.062500
vt 0.187500 0.125000
vt 0.031250 0.125000
vt 0.031250 0.062500
vt 0.250000 0.000000
vt 0.031250 0.000000
vt 0.187500 0.250000
vt 0.031250 0.250000
vt 0.031250 0.187500
vt 0.187500 0.187500
vt 0.250000 0.156250
vt 0.187500 0.156250
vt 0.343750 0.062500
vt 0.343750 0.000000
vt 0.218750 0.187500
vt 0.218750 0.250000
vn -1.0000 -0.0000 -0.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
s off
f 3/1/1 4/2/1 8/3/1 7/4/1
f 7/4/1 8/3/1 12/5/1 11/6/1
f 5/7/2 6/8/2 2/9/2 1/10/2
f 3/1/3 7/4/3 5/11/3 1/12/3
f 8/13/4 4/14/4 2/15/4 6/16/4
f 6/8/2 5/7/2 9/17/2 10/18/2
f 5/11/5 7/4/5 11/19/5 9/20/5
f 8/13/6 6/16/6 10/21/6 12/22/6
o Cube.002
v 0.125000 -0.375000 0.500000
v 0.125000 0.125000 0.500000
v -0.125000 -0.375000 0.500000
v -0.125000 0.125000 0.500000
v 0.125000 -0.375000 0.437500
v 0.125000 0.125000 0.437500
v -0.125000 -0.375000 0.437500
v -0.125000 0.125000 0.437500
vt 0.937500 0.000000
vt 0.937500 0.500000
vt 0.687500 0.500000
vt 0.687500 0.000000
vt 0.625000 0.500000
vt 0.625000 0.000000
vt 0.375000 0.500000
vt 0.375000 0.000000
vt 0.312500 0.500000
vt 0.312500 0.000000
vt 0.937500 0.250000
vt 1.000000 0.250000
vt 1.000000 0.500000
vt 0.937500 0.500000
vt 0.937500 0.000000
vt 1.000000 0.000000
vt 1.000000 0.250000
vt 0.937500 0.250000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 13/23/7 14/24/7 16/25/7 15/26/7
f 15/26/8 16/25/8 20/27/8 19/28/8
f 19/28/9 20/27/9 18/29/9 17/30/9
f 17/30/10 18/29/10 14/31/10 13/32/10
f 15/33/11 19/34/11 17/35/11 13/36/11
f 20/37/12 16/38/12 14/39/12 18/40/12
o Cube.001
v 0.125000 -0.250000 0.375000
v 0.125000 0.250000 0.375000
v -0.125000 -0.250000 0.375000
v -0.125000 0.250000 0.375000
v 0.125000 -0.250000 0.125000
v 0.125000 0.250000 0.125000
v -0.125000 -0.250000 0.125000
v -0.125000 0.250000 0.125000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.750000 1.000000
vt 0.750000 0.500000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.250000
vt 0.250000 0.250000
vt 0.250000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.250000
vt 0.250000 0.250000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 21/41/13 22/42/13 24/43/13 23/44/13
f 23/44/14 24/43/14 28/45/14 27/46/14
f 27/46/15 28/45/15 26/47/15 25/48/15
f 25/48/16 26/47/16 22/49/16 21/50/16
f 23/51/17 27/52/17 25/53/17 21/54/17
f 28/55/18 24/56/18 22/57/18 26/58/18
# vertices [28]
v 0.125 -0.25 0.375
v 0.125 0.25 0.375
v -0.125 0.25 0.375
v -0.125 -0.25 0.375
v -0.125 0.25 0.125
v -0.125 -0.25 0.125
v 0.125 0.25 0.125
v 0.125 -0.25 0.125
v -0.03125 -0.34375 0.4375
v -0.03125 -0.28125 0.4375
v -0.03125 -0.28125 0.28125
v -0.03125 -0.34375 0.21875
v -0.03125 -0.25 0.28125
v -0.03125 -0.25 0.21875
v 0.03125 -0.34375 0.21875
v 0.03125 -0.28125 0.28125
v 0.03125 -0.28125 0.4375
v 0.03125 -0.34375 0.4375
v 0.03125 -0.25 0.21875
v 0.03125 -0.25 0.28125
v 0.125 -0.375 0.5
v 0.125 0.125 0.5
v -0.125 0.125 0.5
v -0.125 -0.375 0.5
v -0.125 0.125 0.4375
v -0.125 -0.375 0.4375
v 0.125 0.125 0.4375
v 0.125 -0.375 0.4375
# normals [6]
vn 0 0 1
vn -1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 -1 0
vn 0 1 0
# uvs [41]
vt 1 0.5
vt 1 1
vt 0.75 1
vt 0.75 0.5
vt 0.5 1
vt 0.5 0.5
vt 0.25 1
vt 0.25 0.5
vt 0 1
vt 0 0.5
vt 0 0.25
vt 0.25 0.25
vt 0.03125 0.0625
vt 0.03125 0.125
vt 0.1875 0.125
vt 0.25 0.0625
vt 0.1875 0.15625
vt 0.25 0.15625
vt 0.25 0
vt 0.03125 0
vt 0.1875 0.25
vt 0.03125 0.25
vt 0.03125 0.1875
vt 0.1875 0.1875
vt 0.34375 0.0625
vt 0.34375 0
vt 0.21875 0.1875
vt 0.21875 0.25
vt 0.9375 0
vt 0.9375 0.5
vt 0.6875 0.5
vt 0.6875 0
vt 0.625 0.5
vt 0.625 0
vt 0.375 0.5
vt 0.375 0
vt 0.3125 0.5
vt 0.3125 0
vt 0.9375 0.25
vt 1 0.25
vt 1 0
# objects [1]
o WallLamp
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/4/2 3/3/2 5/5/2 6/6/2
f 6/6/3 5/5/3 7/7/3 8/8/3
f 8/8/4 7/7/4 2/9/4 1/10/4
f 4/8/5 6/10/5 8/11/5 1/12/5
f 5/8/6 3/10/6 2/11/6 7/12/6
f 9/13/2 10/14/2 11/15/2 12/16/2
f 12/16/2 11/15/2 13/17/2 14/18/2
f 15/16/4 16/15/4 17/14/4 18/13/4
f 9/13/5 12/16/5 15/19/5 18/20/5
f 11/21/6 10/22/6 17/23/6 16/24/6
f 16/15/4 15/16/4 19/18/4 20/17/4
f 15/19/3 12/16/3 14/25/3 19/26/3
f 11/21/1 16/24/1 20/27/1 13/28/1
f 21/29/1 22/30/1 23/31/1 24/32/1
f 24/32/2 23/31/2 25/33/2 26/34/2
f 26/34/3 25/33/3 27/35/3 28/36/3
f 28/36/4 27/35/4 22/37/4 21/38/4
f 24/39/5 26/40/5 28/1/5 21/30/5
f 25/29/6 23/41/6 22/40/6 27/39/6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 B

After

Width:  |  Height:  |  Size: 112 B

View file

@ -97,6 +97,7 @@ minetest.register_node("morelights_vintage:smallblock", {
"morelights_vintage_block.png",
"[combine:16x16:0,4=morelights_vintage_block.png"
},
use_texture_alpha = "opaque",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
@ -118,6 +119,7 @@ minetest.register_node("morelights_vintage:lantern_f", {
"morelights_vintage_lantern.png",
"morelights_metal_dark_32.png"
},
use_texture_alpha = "opaque",
collision_box = {
type = "fixed",
fixed = {-3/16, -1/2, -3/16, 3/16, 1/16, 3/16}
@ -160,6 +162,7 @@ minetest.register_node("morelights_vintage:lantern_c", {
"morelights_vintage_lantern.png",
"morelights_metal_dark_32.png"
},
use_texture_alpha = "opaque",
collision_box = {
type = "fixed",
fixed = {-3/16, -1/16, -3/16, 3/16, 1/2, 3/16}
@ -185,6 +188,7 @@ minetest.register_node("morelights_vintage:lantern_w", {
"morelights_vintage_lantern.png",
"morelights_metal_dark_32.png"
},
use_texture_alpha = "clip",
collision_box = {
type = "fixed",
fixed = {-3/16, -1/4, -5/16, 3/16, 1/8, 3/16}
@ -214,7 +218,7 @@ minetest.register_node("morelights_vintage:hangingbulb", {
},
inventory_image = "morelights_vintage_hangingbulb_inv.png",
wield_image = "morelights_vintage_hangingbulb_inv.png",
use_texture_alpha = true,
use_texture_alpha = "blend",
collision_box = {
type = "fixed",
fixed = {-1/8, -1/8, -1/8, 1/8, 1/2, 1/8}
@ -248,6 +252,7 @@ minetest.register_node("morelights_vintage:oillamp", {
"morelights_vintage_oillamp.png",
"morelights_vintage_brass_32.png"
},
use_texture_alpha = "clip",
collision_box = {
type = "fixed",
fixed = {-1/8, -1/2, -1/8, 1/8, 1/4, 1/8}
@ -272,6 +277,7 @@ minetest.register_node("morelights_vintage:chandelier", {
"morelights_vintage_chandelier.png",
"morelights_vintage_brass_32.png^[multiply:#DFDFDF"
},
use_texture_alpha = "clip",
collision_box = {
type = "fixed",
fixed = {-3/8, -1/2, -3/8, 3/8, 1/2, 3/8}

View file

@ -1,79 +1,86 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_chandelier.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T19:28:47Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Plane.001_Plane.005
v 0.250000 -0.500000 -0.433013
v -0.250000 -0.500000 0.433013
v 0.250000 0.500000 -0.433013
v -0.250000 0.500000 0.433013
v -0.250000 -0.500000 -0.433013
v 0.250000 -0.500000 0.433013
v -0.250000 0.500000 -0.433013
v 0.250000 0.500000 0.433013
v 0.500000 -0.500000 0.000000
v -0.500000 -0.500000 0.000000
v 0.500000 0.500000 -0.000000
v -0.500000 0.500000 0.000000
v 0.000000 -0.500000 0.000000
v -0.000000 0.500000 -0.000000
vt 0.000000 0.000000
vt 0.500000 0.000000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 0.000000 1.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vn -0.8660 -0.0000 -0.5000
vn -0.8660 -0.0000 0.5000
vn -0.0000 -0.0000 -1.0000
g Plane.001_Plane.005_Material.001
s off
f 1/1/1 13/2/1 14/3/1 3/4/1
f 5/5/2 13/2/2 14/3/2 7/6/2
f 9/7/3 13/2/3 14/3/3 11/8/3
f 14/3/1 13/2/1 2/9/1 4/10/1
f 14/3/2 13/2/2 6/11/2 8/12/2
f 14/3/3 13/2/3 10/13/3 12/14/3
o Cube
v 0.031250 -0.375000 -0.031250
v 0.031250 -0.375000 0.031250
v -0.031250 -0.375000 0.031250
v -0.031250 -0.375000 -0.031250
v 0.031250 0.500000 -0.031250
v 0.031250 0.500000 0.031250
v -0.031250 0.500000 0.031250
v -0.031250 0.500000 -0.031250
vt 0.437500 0.062500
vt 0.375000 0.062500
vt 0.375000 0.000000
vt 0.437500 0.000000
vt 0.437500 0.937500
vt 0.437500 1.000000
vt 0.375000 1.000000
vt 0.375000 0.937500
vt 0.625000 0.062500
vt 0.625000 0.937500
vt 0.562500 0.937500
vt 0.562500 0.062500
vt 0.500000 0.937500
vt 0.500000 0.062500
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
g Cube_Cube_Material
s off
f 15/15/4 16/16/4 17/17/4 18/18/4
f 19/19/5 22/20/5 21/21/5 20/22/5
f 15/15/6 19/19/6 20/22/6 16/16/6
f 16/23/7 20/24/7 21/25/7 17/26/7
f 17/26/8 21/25/8 22/27/8 18/28/8
f 19/19/9 15/15/9 18/28/9 22/27/9
# vertices [22]
v 0.25 -0.5 -0.433013
v 0 -0.5 0
v 0 0.5 0
v 0.25 0.5 -0.433013
v -0.25 -0.5 -0.433013
v -0.25 0.5 -0.433013
v 0.5 -0.5 0
v 0.5 0.5 0
v -0.25 -0.5 0.433013
v -0.25 0.5 0.433013
v 0.25 -0.5 0.433013
v 0.25 0.5 0.433013
v -0.5 -0.5 0
v -0.5 0.5 0
v 0.03125 -0.375 -0.03125
v 0.03125 -0.375 0.03125
v -0.03125 -0.375 0.03125
v -0.03125 -0.375 -0.03125
v 0.03125 0.5 -0.03125
v -0.03125 0.5 -0.03125
v -0.03125 0.5 0.03125
v 0.03125 0.5 0.03125
# normals [8]
vn -0.866 0 -0.5
vn -0.866 0 0.5
vn 0 0 -1
vn 0 -1 0
vn 0 1 0
vn 1 0 0
vn 0 0 1
vn -1 0 0
# uvs [20]
vt 0 0
vt 0.5 0
vt 0.5 1
vt 0 1
vt 1 0
vt 1 1
vt 0.4375 0.0625
vt 0.375 0.0625
vt 0.375 0
vt 0.4375 0
vt 0.4375 0.9375
vt 0.4375 1
vt 0.375 1
vt 0.375 0.9375
vt 0.625 0.0625
vt 0.625 0.9375
vt 0.5625 0.9375
vt 0.5625 0.0625
vt 0.5 0.9375
vt 0.5 0.0625
# objects [2]
g Chandelier
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 2/2/2 3/3/2 6/4/2
f 7/1/3 2/2/3 3/3/3 8/4/3
f 3/3/1 2/2/1 9/5/1 10/6/1
f 3/3/2 2/2/2 11/5/2 12/6/2
f 3/3/3 2/2/3 13/5/3 14/6/3
g Pole
s 1
f 15/7/4 16/8/4 17/9/4 18/10/4
f 19/11/5 20/12/5 21/13/5 22/14/5
f 15/7/6 19/11/6 22/14/6 16/8/6
f 16/15/7 22/16/7 21/17/7 17/18/7
f 17/18/8 21/17/8 20/19/8 18/20/8
f 19/11/3 15/7/3 18/20/3 20/19/3

View file

@ -1,108 +1,57 @@
# Blender v2.79 (sub 0) OBJ File: 'bulb.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T20:35:12Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Cube_Cube.009
v -0.031250 0.093750 0.031250
v -0.031250 0.343750 0.031250
v -0.031250 0.093750 -0.031250
v -0.031250 0.343750 -0.031250
v 0.031250 0.093750 0.031250
v 0.031250 0.343750 0.031250
v 0.031250 0.093750 -0.031250
v 0.031250 0.343750 -0.031250
v 0.000000 0.343750 0.000000
v 0.000000 0.093750 0.000000
vt 0.000000 1.000000
vt 0.000000 0.750000
vt 0.031251 0.750000
vt 0.031249 1.000000
vt 0.062501 0.750000
vt 0.062499 1.000000
vt 0.000000 0.750000
vt 0.000000 1.000000
vt 0.062499 1.000000
vt 0.062501 0.750000
vn -0.7071 0.0000 0.7071
vn -0.7071 0.0000 -0.7071
s off
f 4/1/1 3/2/1 10/3/1 9/4/1
f 1/5/2 2/6/2 9/4/2 10/3/2
f 9/4/1 10/3/1 5/7/1 6/8/1
f 10/3/2 9/4/2 8/9/2 7/10/2
o Cube.002_Cube.007
v -0.062500 0.000000 0.062500
v -0.062500 0.031250 0.093750
v -0.093750 0.031250 0.062500
v -0.062500 0.312500 0.093750
v -0.062500 0.343750 0.062500
v -0.093750 0.312500 0.062500
v -0.062500 0.000000 -0.062500
v -0.093750 0.031250 -0.062500
v -0.062500 0.031250 -0.093750
v -0.062500 0.343750 -0.062500
v -0.062500 0.312500 -0.093750
v -0.093750 0.312500 -0.062500
v 0.062500 0.000000 0.062500
v 0.093750 0.031250 0.062500
v 0.062500 0.031250 0.093750
v 0.062500 0.343750 0.062500
v 0.062500 0.312500 0.093750
v 0.093750 0.312500 0.062500
v 0.062500 0.000000 -0.062500
v 0.062500 0.031250 -0.093750
v 0.093750 0.031250 -0.062500
v 0.062500 0.343750 -0.062500
v 0.093750 0.312500 -0.062500
v 0.062500 0.312500 -0.093750
vt 0.437500 0.656250
vt 0.437500 0.937500
vt 0.312500 0.937500
vt 0.312500 0.656250
vt 0.625000 0.656250
vt 0.625000 0.937500
vt 0.500000 0.937500
vt 0.500000 0.656250
vt 1.000003 0.656250
vt 1.000002 0.937500
vt 0.875000 0.937500
vt 0.875000 0.656250
vt 0.812500 0.656250
vt 0.812500 0.937500
vt 0.687500 0.937500
vt 0.687500 0.656250
vt 0.281250 0.593750
vt 0.250000 0.656250
vt 0.281250 1.000000
vt 0.250000 0.937500
vt 0.843750 0.593750
vt 0.843750 1.000000
vt 0.468750 0.593750
vt 0.468750 1.000000
vt 0.656250 0.593750
vt 0.656250 1.000000
vt 0.875000 0.593750
vt 1.000003 0.593750
vt 1.000002 1.000000
vt 0.875000 1.000000
vt 0.687500 0.593750
vt 0.812500 0.593750
vt 0.812500 1.000000
vt 0.687500 1.000000
vt 0.500000 0.593750
vt 0.625000 0.593750
vt 0.625000 1.000000
vt 0.500000 1.000000
vt 0.312500 0.593750
vt 0.437500 0.593750
vt 0.437500 1.000000
vt 0.312500 1.000000
vt 0.250000 1.000000
vt 0.125000 1.000000
vt 0.125000 0.875000
vt 0.250000 0.875000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
# vertices [38]
v -0.03125 0.34375 -0.03125
v -0.03125 0.09375 -0.03125
v 0 0.09375 0
v 0 0.34375 0
v -0.03125 0.09375 0.03125
v -0.03125 0.34375 0.03125
v 0.03125 0.09375 0.03125
v 0.03125 0.34375 0.03125
v 0.03125 0.34375 -0.03125
v 0.03125 0.09375 -0.03125
v 0.0625 0.03125 0.09375
v 0.0625 0.3125 0.09375
v -0.0625 0.3125 0.09375
v -0.0625 0.03125 0.09375
v 0.09375 0.03125 -0.0625
v 0.09375 0.3125 -0.0625
v 0.09375 0.3125 0.0625
v 0.09375 0.03125 0.0625
v -0.09375 0.03125 0.0625
v -0.09375 0.3125 0.0625
v -0.09375 0.3125 -0.0625
v -0.09375 0.03125 -0.0625
v -0.0625 0.03125 -0.09375
v -0.0625 0.3125 -0.09375
v 0.0625 0.3125 -0.09375
v 0.0625 0.03125 -0.09375
v -0.0625 0 0.0625
v -0.0625 0.34375 0.0625
v -0.0625 0 -0.0625
v -0.0625 0.34375 -0.0625
v 0.0625 0 0.0625
v 0.0625 0.34375 0.0625
v 0.0625 0 -0.0625
v 0.0625 0.34375 -0.0625
v -0.0625 0.5 0.0625
v -0.0625 0.5 -0.0625
v 0.0625 0.5 -0.0625
v 0.0625 0.5 0.0625
# normals [26]
vn -0.7071 0 0.7071
vn -0.7071 0 -0.7071
vn 0 0 1
vn 1 0 0
vn -1 0 0
vn 0 0 -1
vn -0.5774 -0.5774 0.5774
vn -0.5774 0.5774 0.5774
vn -0.5774 -0.5774 -0.5774
@ -111,82 +60,133 @@ vn 0.5774 -0.5774 0.5774
vn 0.5774 0.5774 0.5774
vn 0.5774 -0.5774 -0.5774
vn 0.5774 0.5774 -0.5774
vn -0.7071 -0.7071 0.0000
vn -0.7071 0.0000 0.7071
vn -0.7071 0.7071 0.0000
vn -0.7071 0.0000 -0.7071
vn 0.0000 -0.7071 -0.7071
vn 0.0000 0.7071 -0.7071
vn 0.7071 0.0000 -0.7071
vn 0.7071 -0.7071 0.0000
vn 0.7071 0.7071 0.0000
vn 0.7071 0.0000 0.7071
vn 0.0000 -0.7071 0.7071
vn 0.0000 0.7071 0.7071
vn 0.0000 -1.0000 0.0000
s off
f 25/11/3 27/12/3 14/13/3 12/14/3
f 31/15/4 33/16/4 28/17/4 24/18/4
f 13/19/5 16/20/5 22/21/5 18/22/5
f 19/23/6 21/24/6 34/25/6 30/26/6
f 11/27/7 12/14/7 13/28/7
f 14/13/8 15/29/8 16/30/8
f 17/31/9 18/22/9 19/23/9
f 20/32/10 21/24/10 22/21/10
f 23/33/11 24/18/11 25/11/11
f 26/34/12 27/12/12 28/17/12
f 29/35/13 30/26/13 31/15/13
f 32/36/14 33/16/14 34/25/14
f 17/37/15 11/38/15 13/19/15 18/22/15
f 12/14/16 14/13/16 16/30/16 13/28/16
f 15/39/17 20/40/17 22/21/17 16/20/17
f 21/24/18 19/23/18 18/22/18 22/21/18
f 29/41/19 17/42/19 19/23/19 30/26/19
f 20/43/20 32/44/20 34/25/20 21/24/20
f 33/16/21 31/15/21 30/26/21 34/25/21
f 23/45/22 29/46/22 31/15/22 24/18/22
f 32/47/23 26/48/23 28/17/23 33/16/23
f 27/12/24 25/11/24 24/18/24 28/17/24
f 11/49/25 23/50/25 25/11/25 12/14/25
f 26/51/26 15/52/26 14/13/26 27/12/26
f 17/53/27 29/54/27 23/55/27 11/56/27
o Cube.001_Cube.006
v -0.062500 0.343750 0.062500
v -0.062500 0.500000 0.062500
v -0.062500 0.343750 -0.062500
v -0.062500 0.500000 -0.062500
v 0.062500 0.343750 0.062500
v 0.062500 0.500000 0.062500
v 0.062500 0.343750 -0.062500
v 0.062500 0.500000 -0.062500
vt 0.500000 0.000000
vt 0.500000 0.156250
vt 0.375000 0.156250
vt 0.375000 0.000000
vt 0.250000 0.156250
vt 0.250000 0.000000
vt 0.125000 0.156250
vt 0.125000 0.000000
vt 0.000000 0.156250
vt 0.000000 0.000000
vt 0.125000 0.156250
vt 0.125000 0.281250
vt 0.000000 0.281250
vt 0.000000 0.156250
vt 0.250000 0.281250
vt 0.125000 0.281250
vt 0.125000 0.156250
vt 0.250000 0.156250
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 35/57/28 36/58/28 38/59/28 37/60/28
f 37/60/29 38/59/29 42/61/29 41/62/29
f 41/62/30 42/61/30 40/63/30 39/64/30
f 39/64/31 40/63/31 36/65/31 35/66/31
f 37/67/32 41/68/32 39/69/32 35/70/32
f 42/71/33 38/72/33 36/73/33 40/74/33
vn -0.7071 -0.7071 0
vn -0.7071 0.7071 0
vn 0 -0.7071 -0.7071
vn 0 0.7071 -0.7071
vn 0.7071 0 -0.7071
vn 0.7071 -0.7071 0
vn 0.7071 0.7071 0
vn 0.7071 0 0.7071
vn 0 -0.7071 0.7071
vn 0 0.7071 0.7071
vn 0 -1 0
vn 0 1 0
# uvs [65]
vt 0 1
vt 0 0.75
vt 0.03125 0.75
vt 0.03125 1
vt 0.0625 0.75
vt 0.0625 1
vt 0.4375 0.65625
vt 0.4375 0.9375
vt 0.3125 0.9375
vt 0.3125 0.65625
vt 0.625 0.65625
vt 0.625 0.9375
vt 0.5 0.9375
vt 0.5 0.65625
vt 1 0.65625
vt 1 0.9375
vt 0.875 0.9375
vt 0.875 0.65625
vt 0.8125 0.65625
vt 0.8125 0.9375
vt 0.6875 0.9375
vt 0.6875 0.65625
vt 0.28125 0.59375
vt 0.25 0.65625
vt 0.28125 1
vt 0.25 0.9375
vt 0.84375 0.59375
vt 0.84375 1
vt 0.46875 0.59375
vt 0.46875 1
vt 0.65625 0.59375
vt 0.65625 1
vt 0.875 0.59375
vt 1 0.59375
vt 1 1
vt 0.875 1
vt 0.6875 0.59375
vt 0.8125 0.59375
vt 0.8125 1
vt 0.6875 1
vt 0.5 0.59375
vt 0.625 0.59375
vt 0.625 1
vt 0.5 1
vt 0.3125 0.59375
vt 0.4375 0.59375
vt 0.4375 1
vt 0.3125 1
vt 0.25 1
vt 0.125 1
vt 0.125 0.875
vt 0.25 0.875
vt 0.5 0
vt 0.5 0.15625
vt 0.375 0.15625
vt 0.375 0
vt 0.25 0.15625
vt 0.25 0
vt 0.125 0.15625
vt 0.125 0
vt 0 0.15625
vt 0 0
vt 0.125 0.28125
vt 0 0.28125
vt 0.25 0.28125
# objects [3]
g Light
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 6/6/2 4/4/2 3/3/2
f 4/4/1 3/3/1 7/2/1 8/1/1
f 3/3/2 4/4/2 9/6/2 10/5/2
g Bulb
s 1
f 11/7/3 12/8/3 13/9/3 14/10/3
f 15/11/4 16/12/4 17/13/4 18/14/4
f 19/15/5 20/16/5 21/17/5 22/18/5
f 23/19/6 24/20/6 25/21/6 26/22/6
f 27/23/7 14/10/7 19/24/7
f 13/9/8 28/25/8 20/26/8
f 29/27/9 22/18/9 23/19/9
f 30/28/10 24/20/10 21/17/10
f 31/29/11 18/14/11 11/7/11
f 32/30/12 12/8/12 17/13/12
f 33/31/13 26/22/13 15/11/13
f 34/32/14 16/12/14 25/21/14
f 29/33/15 27/34/15 19/15/15 22/18/15
f 14/10/1 13/9/1 20/26/1 19/24/1
f 28/35/16 30/36/16 21/17/16 20/16/16
f 24/20/2 23/19/2 22/18/2 21/17/2
f 33/37/17 29/38/17 23/19/17 26/22/17
f 30/39/18 34/40/18 25/21/18 24/20/18
f 16/12/19 15/11/19 26/22/19 25/21/19
f 31/41/20 33/42/20 15/11/20 18/14/20
f 34/43/21 32/44/21 17/13/21 16/12/21
f 12/8/22 11/7/22 18/14/22 17/13/22
f 27/45/23 31/46/23 11/7/23 14/10/23
f 32/47/24 28/48/24 13/9/24 12/8/24
f 29/49/25 33/50/25 31/51/25 27/52/25
g Base
s 1
f 28/53/5 35/54/5 36/55/5 30/56/5
f 30/56/6 36/55/6 37/57/6 34/58/6
f 34/58/4 37/57/4 38/59/4 32/60/4
f 32/60/3 38/59/3 35/61/3 28/62/3
f 30/59/25 34/63/25 32/64/25 28/61/25
f 37/65/26 36/63/26 35/59/26 38/57/26

View file

@ -1,105 +1,101 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_lantern_ceiling.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T19:35:50Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Cube.003
v -0.125000 0.000000 0.125000
v -0.125000 0.375000 0.125000
v -0.125000 0.000000 -0.125000
v -0.125000 0.375000 -0.125000
v 0.125000 0.000000 0.125000
v 0.125000 0.375000 0.125000
v 0.125000 0.000000 -0.125000
v 0.125000 0.375000 -0.125000
vt 0.750000 0.500000
vt 0.750000 0.875000
vt 0.500000 0.875000
vt 0.500000 0.500000
vt 0.250000 0.875000
vt 0.250000 0.500000
vt 0.000000 0.875000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 0.875000
vt 0.750000 0.250000
vt 1.000000 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
g Cube.003_Cube.003_Material.001
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 6/7/3 5/8/3
f 5/9/4 6/10/4 2/2/4 1/1/4
f 3/11/5 7/12/5 5/9/5 1/1/5
o Cube.001
v -0.156250 0.375000 0.156250
v -0.156250 0.437500 0.156250
v -0.156250 0.375000 -0.156250
v -0.156250 0.437500 -0.156250
v 0.156250 0.375000 0.156250
v 0.156250 0.437500 0.156250
v 0.156250 0.375000 -0.156250
v 0.156250 0.437500 -0.156250
v -0.062500 0.437500 0.062500
v -0.062500 0.500000 0.062500
v -0.062500 0.437500 -0.062500
v -0.062500 0.500000 -0.062500
v 0.062500 0.437500 0.062500
v 0.062500 0.500000 0.062500
v 0.062500 0.437500 -0.062500
v 0.062500 0.500000 -0.062500
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 1.000000 0.375000
vt 1.000000 0.437500
vt 0.875000 0.437500
vt 0.875000 0.375000
vt 0.750000 0.437500
vt 0.750000 0.375000
vt 0.625000 0.437500
vt 0.625000 0.375000
vt 0.500000 0.437500
vt 0.500000 0.375000
vt 0.625000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.500000
vt 0.625000 0.500000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
g Cube.001_Cube.001_Material.000
s off
f 9/13/6 10/14/6 12/15/6 11/16/6
f 11/17/7 12/18/7 16/19/7 15/20/7
f 15/20/8 16/19/8 14/21/8 13/22/8
f 13/23/9 14/24/9 10/14/9 9/13/9
f 11/25/10 15/26/10 13/27/10 9/28/10
f 16/29/11 12/30/11 10/31/11 14/32/11
f 17/33/6 18/34/6 20/35/6 19/36/6
f 19/36/7 20/35/7 24/37/7 23/38/7
f 23/38/8 24/37/8 22/39/8 21/40/8
f 21/40/9 22/39/9 18/41/9 17/42/9
f 24/43/11 20/44/11 18/45/11 22/46/11
# vertices [24]
v -0.125 0 0.125
v -0.125 0.375 0.125
v -0.125 0.375 -0.125
v -0.125 0 -0.125
v 0.125 0.375 -0.125
v 0.125 0 -0.125
v 0.125 0.375 0.125
v 0.125 0 0.125
v -0.15625 0.375 0.15625
v -0.15625 0.4375 0.15625
v -0.15625 0.4375 -0.15625
v -0.15625 0.375 -0.15625
v 0.15625 0.4375 -0.15625
v 0.15625 0.375 -0.15625
v 0.15625 0.4375 0.15625
v 0.15625 0.375 0.15625
v -0.0625 0.4375 0.0625
v -0.0625 0.5 0.0625
v -0.0625 0.5 -0.0625
v -0.0625 0.4375 -0.0625
v 0.0625 0.5 -0.0625
v 0.0625 0.4375 -0.0625
v 0.0625 0.5 0.0625
v 0.0625 0.4375 0.0625
# normals [6]
vn -1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
# uvs [31]
vt 0.75 0.5
vt 0.75 0.875
vt 0.5 0.875
vt 0.5 0.5
vt 0.25 0.875
vt 0.25 0.5
vt 0 0.875
vt 0 0.5
vt 1 0.5
vt 1 0.875
vt 0.75 0.25
vt 1 0.25
vt 0.5 0.8125
vt 0.8125 0.8125
vt 0.8125 0.875
vt 0.1875 0.875
vt 0.1875 0.8125
vt 0.1875 0.5
vt 1 0.375
vt 1 0.4375
vt 0.875 0.4375
vt 0.875 0.375
vt 0.75 0.4375
vt 0.75 0.375
vt 0.625 0.4375
vt 0.625 0.375
vt 0.5 0.4375
vt 0.5 0.375
vt 0.625 0.625
vt 0.5 0.625
vt 0.625 0.5
# objects [2]
g LanternGlobe
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/4/2 3/3/2 5/5/2 6/6/2
f 6/6/3 5/5/3 7/7/3 8/8/3
f 8/9/4 7/10/4 2/2/4 1/1/4
f 4/11/5 6/12/5 8/9/5 1/1/5
g LanternMetal
s 1
f 9/3/1 10/13/1 11/14/1 12/15/1
f 12/14/2 11/15/2 13/3/2 14/13/2
f 14/13/3 13/3/3 15/16/3 16/17/3
f 16/16/4 15/17/4 10/13/4 9/3/4
f 12/13/5 14/17/5 16/18/5 9/4/5
f 13/4/6 11/13/6 10/17/6 15/18/6
f 17/19/1 18/20/1 19/21/1 20/22/1
f 20/22/2 19/21/2 21/23/2 22/24/2
f 22/24/3 21/23/3 23/25/3 24/26/3
f 24/26/4 23/25/4 18/27/4 17/28/4
f 21/29/6 19/30/6 18/4/6 23/31/6

View file

@ -1,131 +1,118 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_lantern.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T19:37:30Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Cube.003
v -0.125000 -0.437500 0.125000
v -0.125000 -0.062500 0.125000
v -0.125000 -0.437500 -0.125000
v -0.125000 -0.062500 -0.125000
v 0.125000 -0.437500 0.125000
v 0.125000 -0.062500 0.125000
v 0.125000 -0.437500 -0.125000
v 0.125000 -0.062500 -0.125000
vt 0.750000 0.500000
vt 0.750000 0.875000
vt 0.500000 0.875000
vt 0.500000 0.500000
vt 0.250000 0.875000
vt 0.250000 0.500000
vt 0.000000 0.875000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 0.875000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
g Cube.003_Cube.003_Material.001
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 6/7/3 5/8/3
f 5/9/4 6/10/4 2/2/4 1/1/4
o Cube.001
v -0.156250 -0.500000 0.156250
v -0.156250 -0.437500 0.156250
v -0.156250 -0.500000 -0.156250
v -0.156250 -0.437500 -0.156250
v 0.156250 -0.500000 0.156250
v 0.156250 -0.437500 0.156250
v 0.156250 -0.500000 -0.156250
v 0.156250 -0.437500 -0.156250
v -0.156250 -0.062500 0.156250
v -0.156250 0.000000 0.156250
v -0.156250 -0.062500 -0.156250
v -0.156250 0.000000 -0.156250
v 0.156250 -0.062500 0.156250
v 0.156250 0.000000 0.156250
v 0.156250 -0.062500 -0.156250
v 0.156250 0.000000 -0.156250
v -0.062500 0.000000 0.062500
v -0.062500 0.062500 0.062500
v -0.062500 0.000000 -0.062500
v -0.062500 0.062500 -0.062500
v 0.062500 0.000000 0.062500
v 0.062500 0.062500 0.062500
v 0.062500 0.000000 -0.062500
v 0.062500 0.062500 -0.062500
vt 0.500000 0.187500
vt 0.500000 0.125000
vt 0.812500 0.125000
vt 0.812500 0.187500
vt 0.812500 0.125000
vt 0.812500 0.187500
vt 0.500000 0.187500
vt 0.500000 0.125000
vt 0.187500 0.187500
vt 0.187500 0.125000
vt 0.187500 0.187500
vt 0.187500 0.125000
vt 0.500000 0.500000
vt 0.187500 0.500000
vt 0.500000 0.500000
vt 0.187500 0.500000
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 1.000000 0.375000
vt 1.000000 0.437500
vt 0.875000 0.437500
vt 0.875000 0.375000
vt 0.750000 0.437500
vt 0.750000 0.375000
vt 0.625000 0.437500
vt 0.625000 0.375000
vt 0.500000 0.437500
vt 0.500000 0.375000
vt 0.625000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.500000
vt 0.625000 0.500000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
g Cube.001_Cube.001_Material.000
s off
f 9/11/5 10/12/5 12/13/5 11/14/5
f 11/15/6 12/16/6 16/17/6 15/18/6
f 15/18/7 16/17/7 14/19/7 13/20/7
f 13/21/8 14/22/8 10/12/8 9/11/8
f 11/23/9 15/24/9 13/21/9 9/11/9
f 16/17/10 12/25/10 10/26/10 14/19/10
f 17/27/5 18/28/5 20/29/5 19/30/5
f 19/31/6 20/32/6 24/33/6 23/34/6
f 23/34/7 24/33/7 22/35/7 21/36/7
f 21/37/8 22/38/8 18/28/8 17/27/8
f 19/39/9 23/40/9 21/41/9 17/42/9
f 24/43/10 20/44/10 18/45/10 22/46/10
f 25/47/5 26/48/5 28/49/5 27/50/5
f 27/50/6 28/49/6 32/51/6 31/52/6
f 31/52/7 32/51/7 30/53/7 29/54/7
f 29/54/8 30/53/8 26/55/8 25/56/8
f 32/57/10 28/58/10 26/59/10 30/60/10
# vertices [32]
v -0.125 -0.4375 0.125
v -0.125 -0.0625 0.125
v -0.125 -0.0625 -0.125
v -0.125 -0.4375 -0.125
v 0.125 -0.0625 -0.125
v 0.125 -0.4375 -0.125
v 0.125 -0.0625 0.125
v 0.125 -0.4375 0.125
v -0.15625 -0.5 0.15625
v -0.15625 -0.4375 0.15625
v -0.15625 -0.4375 -0.15625
v -0.15625 -0.5 -0.15625
v 0.15625 -0.4375 -0.15625
v 0.15625 -0.5 -0.15625
v 0.15625 -0.4375 0.15625
v 0.15625 -0.5 0.15625
v -0.15625 -0.0625 0.15625
v -0.15625 0 0.15625
v -0.15625 0 -0.15625
v -0.15625 -0.0625 -0.15625
v 0.15625 0 -0.15625
v 0.15625 -0.0625 -0.15625
v 0.15625 0 0.15625
v 0.15625 -0.0625 0.15625
v -0.0625 0 0.0625
v -0.0625 0.0625 0.0625
v -0.0625 0.0625 -0.0625
v -0.0625 0 -0.0625
v 0.0625 0.0625 -0.0625
v 0.0625 0 -0.0625
v 0.0625 0.0625 0.0625
v 0.0625 0 0.0625
# normals [6]
vn -1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
# uvs [35]
vt 0.75 0.5
vt 0.75 0.875
vt 0.5 0.875
vt 0.5 0.5
vt 0.25 0.875
vt 0.25 0.5
vt 0 0.875
vt 0 0.5
vt 1 0.5
vt 1 0.875
vt 0.5 0.1875
vt 0.5 0.125
vt 0.8125 0.125
vt 0.8125 0.1875
vt 0.1875 0.1875
vt 0.1875 0.125
vt 0.1875 0.5
vt 0.5 0.8125
vt 0.8125 0.8125
vt 0.8125 0.875
vt 0.1875 0.875
vt 0.1875 0.8125
vt 1 0.375
vt 1 0.4375
vt 0.875 0.4375
vt 0.875 0.375
vt 0.75 0.4375
vt 0.75 0.375
vt 0.625 0.4375
vt 0.625 0.375
vt 0.5 0.4375
vt 0.5 0.375
vt 0.625 0.625
vt 0.5 0.625
vt 0.625 0.5
# objects [2]
g LanternGlobe
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/4/2 3/3/2 5/5/2 6/6/2
f 6/6/3 5/5/3 7/7/3 8/8/3
f 8/9/4 7/10/4 2/2/4 1/1/4
g LanternMetal
s 1
f 9/11/1 10/12/1 11/13/1 12/14/1
f 12/13/2 11/14/2 13/11/2 14/12/2
f 14/12/3 13/11/3 15/15/3 16/16/3
f 16/15/4 15/16/4 10/12/4 9/11/4
f 12/4/5 14/17/5 16/15/5 9/11/5
f 13/11/6 11/4/6 10/17/6 15/15/6
f 17/3/1 18/18/1 19/19/1 20/20/1
f 20/19/2 19/20/2 21/3/2 22/18/2
f 22/18/3 21/3/3 23/21/3 24/22/3
f 24/21/4 23/22/4 18/18/4 17/3/4
f 20/18/5 22/22/5 24/17/5 17/4/5
f 21/4/6 19/18/6 18/22/6 23/17/6
f 25/23/1 26/24/1 27/25/1 28/26/1
f 28/26/2 27/25/2 29/27/2 30/28/2
f 30/28/3 29/27/3 31/29/3 32/30/3
f 32/30/4 31/29/4 26/31/4 25/32/4
f 29/33/6 27/34/6 26/4/6 31/35/6

View file

@ -1,142 +1,136 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_lantern_wall2_merged.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T19:39:42Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Cube.003
v -0.125000 -0.187500 -0.312500
v -0.125000 -0.187500 0.062500
v -0.125000 0.062500 -0.312500
v -0.125000 0.062500 0.062500
v 0.125000 -0.187500 -0.312500
v 0.125000 -0.187500 0.062500
v 0.125000 0.062500 -0.312500
v 0.125000 0.062500 0.062500
v -0.000000 -0.437500 0.312500
v 0.000000 -0.437500 0.062500
v -0.000000 0.062500 0.312500
v 0.000000 0.062500 0.062500
vt 0.750000 0.500000
vt 0.750000 0.875000
vt 0.500000 0.875000
vt 0.500000 0.500000
vt 0.250000 0.875000
vt 0.250000 0.500000
vt 0.000000 0.875000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 0.875000
vt 0.000000 0.500000
vt 0.000000 0.250000
vt 0.500000 0.250000
vt 0.500000 0.500000
vt 0.750000 0.250000
vt 1.000000 0.250000
vn -1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 -1.0000
g Cube.003_Cube.003_Material.001
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 6/7/3 5/8/3
f 5/9/4 6/10/4 2/2/4 1/1/4
f 9/11/3 10/12/3 12/13/3 11/14/3
f 3/15/5 7/16/5 5/9/5 1/1/5
o Cube.001
v -0.156250 -0.218750 0.062500
v -0.156250 -0.218750 0.125000
v -0.156250 0.093750 0.062500
v -0.156250 0.093750 0.125000
v 0.156250 -0.218750 0.062500
v 0.156250 -0.218750 0.125000
v 0.156250 0.093750 0.062500
v 0.156250 0.093750 0.125000
v -0.062500 -0.125000 0.125000
v -0.062500 -0.125000 0.187500
v -0.062500 -0.000000 0.125000
v -0.062500 -0.000000 0.187500
v 0.062500 -0.125000 0.125000
v 0.062500 -0.125000 0.187500
v 0.062500 -0.000000 0.125000
v 0.062500 -0.000000 0.187500
v 0.125000 -0.500000 -0.125000
v 0.125000 -0.500000 0.375000
v -0.125000 -0.500000 -0.125000
v -0.125000 -0.500000 0.375000
v 0.125000 -0.437500 -0.125000
v 0.125000 -0.437500 0.375000
v -0.125000 -0.437500 -0.125000
v -0.125000 -0.437500 0.375000
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.812500 0.812500
vt 0.812500 0.875000
vt 0.500000 0.875000
vt 0.500000 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.187500 0.875000
vt 0.187500 0.812500
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 0.500000 0.500000
vt 0.500000 0.500000
vt 0.500000 0.812500
vt 0.187500 0.812500
vt 0.187500 0.500000
vt 1.000000 0.375000
vt 1.000000 0.437500
vt 0.875000 0.437500
vt 0.875000 0.375000
vt 0.750000 0.437500
vt 0.750000 0.375000
vt 0.625000 0.437500
vt 0.625000 0.375000
vt 0.500000 0.437500
vt 0.500000 0.375000
vt 0.625000 0.625000
vt 0.500000 0.625000
vt 0.500000 0.500000
vt 0.625000 0.500000
vt 0.937500 0.250000
vt 0.937500 0.750000
vt 0.687500 0.750000
vt 0.687500 0.250000
vt 0.625000 0.750000
vt 0.625000 0.250000
vt 0.375000 0.750000
vt 0.375000 0.250000
vt 0.312500 0.750000
vt 0.312500 0.250000
vt 0.687500 0.187500
vt 0.937500 0.187500
vt 0.687500 0.812500
vt 0.937500 0.812500
vn -1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
g Cube.001_Cube.001_Material.000
s off
f 13/17/6 14/18/6 16/19/6 15/20/6
f 15/21/7 16/22/7 20/23/7 19/24/7
f 19/24/8 20/23/8 18/25/8 17/26/8
f 17/27/9 18/28/9 14/18/9 13/17/9
f 15/29/10 19/30/10 17/31/10 13/32/10
f 20/33/11 16/34/11 14/35/11 18/36/11
f 21/37/6 22/38/6 24/39/6 23/40/6
f 23/40/7 24/39/7 28/41/7 27/42/7
f 27/42/8 28/41/8 26/43/8 25/44/8
f 25/44/9 26/43/9 22/45/9 21/46/9
f 28/47/11 24/48/11 22/49/11 26/50/11
f 29/51/9 30/52/9 32/53/9 31/54/9
f 31/54/6 32/53/6 36/55/6 35/56/6
f 35/56/7 36/55/7 34/57/7 33/58/7
f 33/58/8 34/57/8 30/59/8 29/60/8
f 31/54/10 35/61/10 33/62/10 29/51/10
f 36/63/11 32/53/11 30/52/11 34/64/11
# vertices [36]
v -0.125 -0.1875 -0.3125
v -0.125 -0.1875 0.0625
v -0.125 0.0625 0.0625
v -0.125 0.0625 -0.3125
v 0.125 0.0625 0.0625
v 0.125 0.0625 -0.3125
v 0.125 -0.1875 0.0625
v 0.125 -0.1875 -0.3125
v 0 -0.4375 0.3125
v 0 -0.4375 0.0625
v 0 0.0625 0.0625
v 0 0.0625 0.3125
v -0.15625 -0.21875 0.0625
v -0.15625 -0.21875 0.125
v -0.15625 0.09375 0.125
v -0.15625 0.09375 0.0625
v 0.15625 0.09375 0.125
v 0.15625 0.09375 0.0625
v 0.15625 -0.21875 0.125
v 0.15625 -0.21875 0.0625
v -0.0625 -0.125 0.125
v -0.0625 -0.125 0.1875
v -0.0625 0 0.1875
v -0.0625 0 0.125
v 0.0625 0 0.1875
v 0.0625 0 0.125
v 0.0625 -0.125 0.1875
v 0.0625 -0.125 0.125
v 0.125 -0.5 -0.125
v 0.125 -0.5 0.375
v -0.125 -0.5 0.375
v -0.125 -0.5 -0.125
v -0.125 -0.4375 0.375
v -0.125 -0.4375 -0.125
v 0.125 -0.4375 0.375
v 0.125 -0.4375 -0.125
# normals [6]
vn -1 0 0
vn 0 1 0
vn 1 0 0
vn 0 -1 0
vn 0 0 -1
vn 0 0 1
# uvs [47]
vt 0.75 0.5
vt 0.75 0.875
vt 0.5 0.875
vt 0.5 0.5
vt 0.25 0.875
vt 0.25 0.5
vt 0 0.875
vt 0 0.5
vt 1 0.5
vt 1 0.875
vt 0 0.25
vt 0.5 0.25
vt 0.75 0.25
vt 1 0.25
vt 0.5 0.8125
vt 0.8125 0.8125
vt 0.8125 0.875
vt 0.1875 0.875
vt 0.1875 0.8125
vt 0.1875 0.5
vt 1 0.375
vt 1 0.4375
vt 0.875 0.4375
vt 0.875 0.375
vt 0.75 0.4375
vt 0.75 0.375
vt 0.625 0.4375
vt 0.625 0.375
vt 0.5 0.4375
vt 0.5 0.375
vt 0.625 0.625
vt 0.5 0.625
vt 0.625 0.5
vt 0.9375 0.25
vt 0.9375 0.75
vt 0.6875 0.75
vt 0.6875 0.25
vt 0.625 0.75
vt 0.625 0.25
vt 0.375 0.75
vt 0.375 0.25
vt 0.3125 0.75
vt 0.3125 0.25
vt 0.6875 0.1875
vt 0.9375 0.1875
vt 0.6875 0.8125
vt 0.9375 0.8125
# objects [2]
g Lantern
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/4/2 3/3/2 5/5/2 6/6/2
f 6/6/3 5/5/3 7/7/3 8/8/3
f 8/9/4 7/10/4 2/2/4 1/1/4
f 9/8/3 10/11/3 11/12/3 12/4/3
f 4/13/5 6/14/5 8/9/5 1/1/5
g LanternMetal
s 1
f 13/3/1 14/15/1 15/16/1 16/17/1
f 16/16/2 15/17/2 17/3/2 18/15/2
f 18/15/3 17/3/3 19/18/3 20/19/3
f 20/18/4 19/19/4 14/15/4 13/3/4
f 16/15/5 18/19/5 20/20/5 13/4/5
f 17/4/6 15/15/6 14/19/6 19/20/6
f 21/21/1 22/22/1 23/23/1 24/24/1
f 24/24/2 23/23/2 25/25/2 26/26/2
f 26/26/3 25/25/3 27/27/3 28/28/3
f 28/28/4 27/27/4 22/29/4 21/30/4
f 25/31/6 23/32/6 22/4/6 27/33/6
f 29/34/4 30/35/4 31/36/4 32/37/4
f 32/37/1 31/36/1 33/38/1 34/39/1
f 34/39/2 33/38/2 35/40/2 36/41/2
f 36/41/3 35/40/3 30/42/3 29/43/3
f 32/37/5 34/44/5 36/45/5 29/34/5
f 33/46/6 31/36/6 30/35/6 35/47/6

View file

@ -1,169 +1,156 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_oillamp.blend'
# Processed with obj-simplify v1.1 (a2f5cd9) | 2021-08-06T20:28:11Z | https://github.com/jonnenauha/obj-simplify
# Blender v2.93.0 OBJ File: ''
# www.blender.org
o Plane
v -0.031250 -0.468750 -0.031250
v 0.031250 -0.468750 0.031250
v -0.031250 0.031250 -0.031250
v 0.031250 0.031250 0.031250
v 0.031250 -0.468750 -0.031250
v -0.031250 -0.468750 0.031250
v 0.031250 0.031250 -0.031250
v -0.031250 0.031250 0.031250
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt -0.000000 1.000000
vn -0.7071 -0.0000 0.7071
vn -0.7071 -0.0000 -0.7071
g Plane_Plane_Material.003
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 5/5/2 6/6/2 8/7/2 7/8/2
o Cube.001
v -0.125000 -0.499000 0.125000
v -0.125000 -0.343750 0.125000
v -0.125000 -0.499000 -0.125000
v -0.125000 -0.343750 -0.125000
v 0.125000 -0.499000 0.125000
v 0.125000 -0.343750 0.125000
v 0.125000 -0.499000 -0.125000
v 0.125000 -0.343750 -0.125000
v -0.125000 -0.218750 0.125000
v -0.125000 0.250000 0.125000
v -0.125000 -0.218750 -0.125000
v -0.125000 0.250000 -0.125000
v 0.125000 -0.218750 0.125000
v 0.125000 0.250000 0.125000
v 0.125000 -0.218750 -0.125000
v 0.125000 0.250000 -0.125000
vt 0.750000 0.000000
vt 0.750000 0.156250
vt 0.500000 0.156250
vt 0.500000 0.000000
vt 0.250000 0.156250
vt 0.250000 0.000000
vt 0.000000 0.156250
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.156250
vt 0.250000 0.406250
vt 0.000000 0.406250
vt 0.000000 0.156250
vt 0.250000 0.156250
vt 0.750000 0.406250
vt 0.750000 0.875000
vt 0.500000 0.875000
vt 0.500000 0.406250
vt 0.250000 0.875000
vt 0.250000 0.406250
vt 0.000000 0.875000
vt 0.000000 0.406250
vt 1.000000 0.406250
vt 1.000000 0.875000
vt 0.500000 0.406250
vt 0.250000 0.406250
vt 0.250000 0.156250
vt 0.500000 0.156250
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
g Cube.001_Cube.001_Material.002
s off
f 9/9/3 10/10/3 12/11/3 11/12/3
f 11/12/4 12/11/4 16/13/4 15/14/4
f 15/14/5 16/13/5 14/15/5 13/16/5
f 13/17/6 14/18/6 10/10/6 9/9/6
f 11/19/7 15/20/7 13/21/7 9/22/7
f 17/23/3 18/24/3 20/25/3 19/26/3
f 19/26/4 20/25/4 24/27/4 23/28/4
f 23/28/5 24/27/5 22/29/5 21/30/5
f 21/31/6 22/32/6 18/24/6 17/23/6
f 18/33/8 22/34/8 24/35/8 20/36/8
o Cube
v 0.062500 -0.312500 -0.062500
v 0.062500 -0.312500 0.062500
v -0.062500 -0.312500 0.062500
v -0.062500 -0.312500 -0.062500
v 0.062500 -0.250000 -0.062500
v 0.062500 -0.250000 0.062500
v -0.062500 -0.250000 0.062500
v -0.062500 -0.250000 -0.062500
v -0.125000 -0.343750 0.125000
v -0.125000 -0.312500 0.125000
v -0.125000 -0.343750 -0.125000
v -0.125000 -0.312500 -0.125000
v 0.125000 -0.343750 0.125000
v 0.125000 -0.312500 0.125000
v 0.125000 -0.343750 -0.125000
v 0.125000 -0.312500 -0.125000
v -0.125000 -0.250000 0.125000
v -0.125000 -0.218750 0.125000
v -0.125000 -0.250000 -0.125000
v -0.125000 -0.218750 -0.125000
v 0.125000 -0.250000 0.125000
v 0.125000 -0.218750 0.125000
v 0.125000 -0.250000 -0.125000
v 0.125000 -0.218750 -0.125000
vt 0.625000 0.531250
vt 0.625000 0.468750
vt 0.750000 0.468750
vt 0.750000 0.531250
vt 0.250000 0.531250
vt 0.250000 0.468750
vt 0.375000 0.468750
vt 0.375000 0.531250
vt 0.500000 0.468750
vt 0.500000 0.531250
vt 0.250000 0.781250
vt 0.250000 0.750000
vt 0.500000 0.750000
vt 0.500000 0.781250
vt 0.750000 0.750000
vt 0.750000 0.781250
vt 1.000000 0.750000
vt 1.000000 0.781250
vt 0.000000 0.781250
vt 0.000000 0.750000
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.250000
vt 0.250000 0.218750
vt 0.500000 0.218750
vt 0.500000 0.250000
vt 0.750000 0.218750
vt 0.750000 0.250000
vt 1.000000 0.218750
vt 1.000000 0.250000
vt 0.000000 0.250000
vt 0.000000 0.218750
vt 0.250000 0.500000
vt 0.000000 0.500000
vn 1.0000 0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
g Cube_Cube_Material
s off
f 25/37/9 29/38/9 30/39/9 26/40/9
f 26/41/10 30/42/10 31/43/10 27/44/10
f 27/44/11 31/43/11 32/45/11 28/46/11
f 29/38/12 25/37/12 28/46/12 32/45/12
f 33/47/11 34/48/11 36/49/11 35/50/11
f 35/50/12 36/49/12 40/51/12 39/52/12
f 39/52/9 40/51/9 38/53/9 37/54/9
f 37/55/10 38/56/10 34/48/10 33/47/10
f 34/48/13 38/56/13 40/57/13 36/58/13
f 41/59/11 42/60/11 44/61/11 43/62/11
f 43/62/12 44/61/12 48/63/12 47/64/12
f 47/64/9 48/63/9 46/65/9 45/66/9
f 45/67/10 46/68/10 42/60/10 41/59/10
f 43/69/14 47/70/14 45/67/14 41/59/14
# vertices [40]
v -0.03125 -0.46875 -0.03125
v 0.03125 -0.46875 0.03125
v 0.03125 0.03125 0.03125
v -0.03125 0.03125 -0.03125
v 0.03125 -0.46875 -0.03125
v -0.03125 -0.46875 0.03125
v -0.03125 0.03125 0.03125
v 0.03125 0.03125 -0.03125
v -0.125 -0.499 0.125
v -0.125 -0.34375 0.125
v -0.125 -0.34375 -0.125
v -0.125 -0.499 -0.125
v 0.125 -0.34375 -0.125
v 0.125 -0.499 -0.125
v 0.125 -0.34375 0.125
v 0.125 -0.499 0.125
v -0.125 -0.21875 0.125
v -0.125 0.25 0.125
v -0.125 0.25 -0.125
v -0.125 -0.21875 -0.125
v 0.125 0.25 -0.125
v 0.125 -0.21875 -0.125
v 0.125 0.25 0.125
v 0.125 -0.21875 0.125
v 0.0625 -0.3125 -0.0625
v 0.0625 -0.25 -0.0625
v 0.0625 -0.25 0.0625
v 0.0625 -0.3125 0.0625
v -0.0625 -0.25 0.0625
v -0.0625 -0.3125 0.0625
v -0.0625 -0.25 -0.0625
v -0.0625 -0.3125 -0.0625
v -0.125 -0.3125 0.125
v -0.125 -0.3125 -0.125
v 0.125 -0.3125 -0.125
v 0.125 -0.3125 0.125
v -0.125 -0.25 0.125
v -0.125 -0.25 -0.125
v 0.125 -0.25 -0.125
v 0.125 -0.25 0.125
# normals [8]
vn -0.7071 0 0.7071
vn -0.7071 0 -0.7071
vn -1 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
# uvs [54]
vt 0 0
vt 1 0
vt 1 1
vt 0 1
vt 0.75 0
vt 0.75 0.15625
vt 0.5 0.15625
vt 0.5 0
vt 0.25 0.15625
vt 0.25 0
vt 0 0.15625
vt 1 0.15625
vt 0.25 0.40625
vt 0 0.40625
vt 0.75 0.40625
vt 0.75 0.875
vt 0.5 0.875
vt 0.5 0.40625
vt 0.25 0.875
vt 0 0.875
vt 1 0.40625
vt 1 0.875
vt 0.625 0.53125
vt 0.625 0.46875
vt 0.75 0.46875
vt 0.75 0.53125
vt 0.25 0.53125
vt 0.25 0.46875
vt 0.375 0.46875
vt 0.375 0.53125
vt 0.5 0.46875
vt 0.5 0.53125
vt 0.25 0.78125
vt 0.25 0.75
vt 0.5 0.75
vt 0.5 0.78125
vt 0.75 0.75
vt 0.75 0.78125
vt 1 0.75
vt 1 0.78125
vt 0 0.78125
vt 0 0.75
vt 0 0.5
vt 0.25 0.5
vt 0.25 0.25
vt 0.25 0.21875
vt 0.5 0.21875
vt 0.5 0.25
vt 0.75 0.21875
vt 0.75 0.25
vt 1 0.21875
vt 1 0.25
vt 0 0.25
vt 0 0.21875
# objects [3]
g Wick
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 6/2/2 7/3/2 8/4/2
g Globe
s 1
f 9/5/3 10/6/3 11/7/3 12/8/3
f 12/8/4 11/7/4 13/9/4 14/10/4
f 14/10/5 13/9/5 15/11/5 16/1/5
f 16/2/6 15/12/6 10/6/6 9/5/6
f 12/13/7 14/14/7 16/11/7 9/9/7
f 17/15/3 18/16/3 19/17/3 20/18/3
f 20/18/4 19/17/4 21/19/4 22/13/4
f 22/13/5 21/19/5 23/20/5 24/14/5
f 24/21/6 23/22/6 18/16/6 17/15/6
f 18/18/8 23/13/8 21/9/8 19/7/8
g Metal
s 1
f 25/23/5 26/24/5 27/25/5 28/26/5
f 28/27/6 27/28/6 29/29/6 30/30/6
f 30/30/3 29/29/3 31/31/3 32/32/3
f 26/24/4 25/23/4 32/32/4 31/31/4
f 10/33/3 33/34/3 34/35/3 11/36/3
f 11/36/4 34/35/4 35/37/4 13/38/4
f 13/38/5 35/37/5 36/39/5 15/40/5
f 15/41/6 36/42/6 33/34/6 10/33/6
f 33/34/8 36/42/8 35/43/8 34/44/8
f 37/45/3 17/46/3 20/47/3 38/48/3
f 38/48/4 20/47/4 22/49/4 39/50/4
f 39/50/5 22/49/5 24/51/5 40/52/5
f 40/53/6 24/54/6 17/46/6 37/45/6
f 38/44/7 39/43/7 40/53/7 37/45/7

View file

@ -1,42 +0,0 @@
# Blender v2.79 (sub 0) OBJ File: 'vintage_streetlamp.blend'
# www.blender.org
mtllib morelights_vintage_streetlamp.mtl
o Plane
v -0.312500 0.075000 0.312500
v 0.312500 0.075000 0.312500
v -0.312500 0.075000 -0.312500
v 0.312500 0.075000 -0.312500
v 0.000000 0.325000 0.000000
vn 0.6247 -0.7809 0.0000
vn 0.0000 -0.7809 -0.6247
vn -0.6247 -0.7809 0.0000
vn 0.0000 -0.7809 0.6247
usemtl None
s off
f 1//1 3//1 5//1
f 2//2 1//2 5//2
f 4//3 2//3 5//3
f 3//4 4//4 5//4
o Cube.001
v -0.187500 -0.500000 0.187500
v -0.250000 0.125000 0.250000
v -0.187500 -0.500000 -0.187500
v -0.250000 0.125000 -0.250000
v 0.187500 -0.500000 0.187500
v 0.250000 0.125000 0.250000
v 0.187500 -0.500000 -0.187500
v 0.250000 0.125000 -0.250000
vn -0.9950 -0.0995 0.0000
vn 0.0000 -0.0995 -0.9950
vn 0.9950 -0.0995 0.0000
vn 0.0000 -0.0995 0.9950
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
usemtl None
s off
f 6//5 7//5 9//5 8//5
f 8//6 9//6 13//6 12//6
f 12//7 13//7 11//7 10//7
f 10//8 11//8 7//8 6//8
f 8//9 12//9 10//9 6//9
f 13//10 9//10 7//10 11//10

View file

@ -0,0 +1,3 @@
Farmer Survivor
yotuderconnect
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Crazy Sam
yotuderconnect
CC BY-NC-SA 4.0

View file

@ -0,0 +1,3 @@
joshua
juan
CC BY-SA 3.0

View file

@ -0,0 +1,3 @@
KLP37 skin
KirbyLP37#6969
CC BY-SA 3.0

View file

@ -0,0 +1,3 @@
Mythrodak
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Dream
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
ShadowApples
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Mumbo Jumbo
ZestyZachary
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Doni Bobes
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
GeorgeNotFound
ZestyZachary
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Doni Bobes (capeless)
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Sapnap
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Fundy
ZestyZachary
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
BadBoyHalo
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Jschlatt
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
Technoblade
Christian_Soldier
CC 0 (1.0)

View file

@ -0,0 +1,3 @@
eline
eline
CC BY-NC-SA 4.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -151,7 +151,14 @@ tubelib.register_node("tubelib_addons3:chest", {}, {
end,
on_push_item = function(pos, side, item)
local meta = minetest.get_meta(pos)
return tubelib.put_item(meta, "main", item)
local res = tubelib.put_item(meta, "main", item)
if res == false then
local inv = meta:get_inventory()
local leftover = inv:add_item("main", item)
item:set_count(leftover:get_count())
return false
end
return true
end,
on_unpull_item = function(pos, side, item)
local meta = minetest.get_meta(pos)

View file

@ -244,6 +244,12 @@ local function distributing(pos, meta)
rearrange_table(kvFilterItemNames[name])
busy = true
break
elseif num ~= stack:get_count() then
local color = Side2Color[side]
counter[color] = counter[color] + stack:get_count()
rearrange_table(kvFilterItemNames[name])
busy = true
break
end
end
@ -257,6 +263,10 @@ local function distributing(pos, meta)
counter[color] = counter[color] + num
busy = true
end
elseif num ~= stack:get_count() then
local color = Side2Color[side]
counter[color] = counter[color] + stack:get_count()
busy = true
end
end
end

View file

@ -42,12 +42,16 @@ local function pushing(pos, meta)
local player_name = meta:get_string("player_name")
local items = tubelib.pull_stack(pos, "L", player_name)
if items ~= nil then
local count = items:get_count()
if tubelib.push_items(pos, "R", items, player_name) == false then
-- place item back
tubelib.unpull_items(pos, "L", items, player_name)
-- Complete stack rejected
if count == items:get_count() then
State:blocked(pos, meta)
return
end
end
if State.get_state(pos, meta) ~= tubelib.STOPPED then
State:keep_running(pos, meta, COUNTDOWN_TICKS, 1)
end