Initial commit.
commit
664b7c0af0
|
@ -0,0 +1,3 @@
|
|||
[submodule "deps/minetest-australopithecus-worldgen-utils"]
|
||||
path = deps/minetest-australopithecus-worldgen-utils
|
||||
url = https://github.com/minetest-australopithecus/minetest-australopithecus-worldgen-utils.git
|
|
@ -0,0 +1,24 @@
|
|||
Copyright (c) 2014, Robert 'Bobby' Zenz
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
deps := deps
|
||||
doc := doc
|
||||
mod_name := auto_drops
|
||||
mods := mods
|
||||
release := release
|
||||
release_name := auto-drops
|
||||
|
||||
all: doc
|
||||
|
||||
clean:
|
||||
$(RM) -R $(doc)
|
||||
|
||||
.PHONY: doc
|
||||
doc:
|
||||
ldoc --dir=$(doc) mods/$(mod_name)
|
||||
|
||||
.PHONY: release
|
||||
release:
|
||||
# Prepare the directory structure.
|
||||
mkdir -p $(release)/
|
||||
mkdir -p $(release)/$(release_name)/
|
||||
mkdir -p $(release)/$(release_name)/mods/
|
||||
|
||||
# Copy the dependencies.
|
||||
cp -R $(deps)/utils/utils $(release)/$(release_name)/mods/
|
||||
|
||||
# Copy the mods.
|
||||
cp -R $(mods)/$(mod_name) $(release)/$(release_name)/mods/
|
||||
|
||||
# Copy the files.
|
||||
cp LICENSE $(release)/$(release_name)/
|
||||
cp README $(release)/$(release_name)/
|
||||
|
||||
tar -c --xz -C $(release) -f $(release)/$(release_name).tar.xz $(release_name)/
|
||||
tar -c --gz -C $(release) -f $(release)/$(release_name).tar.gz $(release_name)/
|
||||
cd $(release); zip -r -9 $(release_name).zip $(release_name); cd -
|
||||
|
||||
.PHONY: update-deps
|
||||
update-deps:
|
||||
git submodule foreach git pull origin master
|
||||
git add $(deps)/
|
||||
git commit -m "Updated dependencies."
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
minetest-australopithecus-auto-drops
|
||||
====================================
|
||||
|
||||
A system which drops all drops from a dug node as items.
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
The system activates itself, you just need to add the mod to the subgame.
|
||||
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The system can be configured by adding settings to the `minetest.conf`:
|
||||
|
||||
# If the system should be activated, defaults to true.
|
||||
autodrops_activate = true.
|
||||
|
||||
# If the stacks that are split in some way, defaults to single.
|
||||
# Possible values are:
|
||||
# random: The dropped stacks are split randomly.
|
||||
# single: The dropped stacks are split into every single item.
|
||||
# stack: The dropped stacks are dropped as they are.
|
||||
autodrops_split = single
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a00e993a48049840889d1a174699f6486c459709
|
|
@ -0,0 +1,250 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<head>
|
||||
<title>Reference</title>
|
||||
<link rel="stylesheet" href="ldoc.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="container">
|
||||
|
||||
<div id="product">
|
||||
<div id="product_logo"></div>
|
||||
<div id="product_name"><big><b></b></big></div>
|
||||
<div id="product_description"></div>
|
||||
</div> <!-- id="product" -->
|
||||
|
||||
|
||||
<div id="main">
|
||||
|
||||
|
||||
<!-- Menu -->
|
||||
|
||||
<div id="navigation">
|
||||
<br/>
|
||||
<h1>ldoc</h1>
|
||||
|
||||
|
||||
<h2>Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#Functions">Functions</a></li>
|
||||
<li><a href="#Fields">Fields</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Modules</h2>
|
||||
<ul class="$(kind=='Topics' and '' or 'nowrap'">
|
||||
<li><strong>autodrops</strong></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<h1>Module <code>autodrops</code></h1>
|
||||
<p>Autodrops is a system which enables that drops from nodes become items
|
||||
which are dropped on the ground, instead of being send directly to
|
||||
the player inventory.</p>
|
||||
<p></p>
|
||||
|
||||
|
||||
<h2><a href="#Functions">Functions</a></h2>
|
||||
<table class="function_list">
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#drop">drop (position, stacks)</a></td>
|
||||
<td class="summary">Drops the given ItemStacks at the given position, based on the settings.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#drop_random">drop_random (position, stack)</a></td>
|
||||
<td class="summary">Drops the given stack from the given position by splitting it into random
|
||||
amounts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#drop_single">drop_single (position, stack)</a></td>
|
||||
<td class="summary">Drops the given stack from the given position by splitting it into single
|
||||
items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#drop_stack">drop_stack (position, stack)</a></td>
|
||||
<td class="summary">Drops the given stack from the given position.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#node_drops_handler">node_drops_handler (position, drops, player, handled)</a></td>
|
||||
<td class="summary">The handler which is registered for handling the node drops.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2><a href="#Fields">Fields</a></h2>
|
||||
<table class="function_list">
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#split">split</a></td>
|
||||
<td class="summary">The split method that is used.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
<h2><a name="Functions"></a>Functions</h2>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
<a name = "drop"></a>
|
||||
<strong>drop (position, stacks)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Drops the given ItemStacks at the given position, based on the settings.
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">position</span>
|
||||
The position at which to drop the items.
|
||||
</li>
|
||||
<li><span class="parameter">stacks</span>
|
||||
The array of ItemStacks to drop.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "drop_random"></a>
|
||||
<strong>drop_random (position, stack)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Drops the given stack from the given position by splitting it into random
|
||||
amounts.
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">position</span>
|
||||
The position at which the items should spawn.
|
||||
</li>
|
||||
<li><span class="parameter">stack</span>
|
||||
The ItemStack to drop.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "drop_single"></a>
|
||||
<strong>drop_single (position, stack)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Drops the given stack from the given position by splitting it into single
|
||||
items.
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">position</span>
|
||||
The position at which the items should spawn.
|
||||
</li>
|
||||
<li><span class="parameter">stack</span>
|
||||
The ItemStack to drop.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "drop_stack"></a>
|
||||
<strong>drop_stack (position, stack)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Drops the given stack from the given position.
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">position</span>
|
||||
The position at which the items should spawn.
|
||||
</li>
|
||||
<li><span class="parameter">stack</span>
|
||||
The ItemStack to drop.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "node_drops_handler"></a>
|
||||
<strong>node_drops_handler (position, drops, player, handled)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
The handler which is registered for handling the node drops.
|
||||
|
||||
|
||||
<h3>Parameters:</h3>
|
||||
<ul>
|
||||
<li><span class="parameter">position</span>
|
||||
The position at which the drop occured.
|
||||
</li>
|
||||
<li><span class="parameter">drops</span>
|
||||
The array of ItemStacks which are dropped.
|
||||
</li>
|
||||
<li><span class="parameter">player</span>
|
||||
The player which originated the event.
|
||||
</li>
|
||||
<li><span class="parameter">handled</span>
|
||||
If the event has already been handled or not.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Returns:</h3>
|
||||
<ol>
|
||||
|
||||
true, because the event has been handled by this function.
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<h2><a name="Fields"></a>Fields</h2>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
<a name = "split"></a>
|
||||
<strong>split</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
The split method that is used. Possible values are "stack", "random"
|
||||
and "single", defaults to "single". "stack" means that the full stack
|
||||
as provided is dropped, "random" splits the provided stack randomly and
|
||||
"single" splits the provided stack into individual items.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</div> <!-- id="content" -->
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.2</a></i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,302 @@
|
|||
/* 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 {
|
||||
list-style: disc;
|
||||
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; }
|
||||
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: 0 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.example {
|
||||
background-color: rgb(245, 245, 245);
|
||||
border: 1px solid silver;
|
||||
padding: 10px;
|
||||
margin: 10px 0 10px 0;
|
||||
font-family: "Andale Mono", monospace;
|
||||
font-size: .85em;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: rgb(245, 245, 245);
|
||||
border: 1px solid silver;
|
||||
padding: 10px;
|
||||
margin: 10px 0 10px 0;
|
||||
overflow: auto;
|
||||
font-family: "Andale Mono", monospace;
|
||||
}
|
||||
|
||||
|
||||
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: 18em;
|
||||
vertical-align: top;
|
||||
background-color: #f0f0f0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#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: 18em;
|
||||
padding: 1em;
|
||||
width: 700px;
|
||||
border-left: 2px solid #cccccc;
|
||||
border-right: 2px solid #cccccc;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#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; }
|
||||
|
||||
/* styles for prettification of source */
|
||||
pre .comment { color: #558817; }
|
||||
pre .constant { color: #a8660d; }
|
||||
pre .escape { color: #844631; }
|
||||
pre .keyword { color: #2239a8; font-weight: bold; }
|
||||
pre .library { color: #0e7c6b; }
|
||||
pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
|
||||
pre .string { color: #a8660d; }
|
||||
pre .number { color: #f8660d; }
|
||||
pre .operator { color: #2239a8; font-weight: bold; }
|
||||
pre .preprocessor, pre .prepro { color: #a33243; }
|
||||
pre .global { color: #800080; }
|
||||
pre .prompt { color: #558817; }
|
||||
pre .url { color: #272fc2; text-decoration: underline; }
|
|
@ -0,0 +1,114 @@
|
|||
--[[
|
||||
Copyright (c) 2015, Robert 'Bobby' Zenz
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
--]]
|
||||
|
||||
|
||||
--- Autodrops is a system which enables that drops from nodes become items
|
||||
-- which are dropped on the ground, instead of being send directly to
|
||||
-- the player inventory.
|
||||
autodrops = {
|
||||
--- The split method that is used. Possible values are "stack", "random"
|
||||
-- and "single", defaults to "single". "stack" means that the full stack
|
||||
-- as provided is dropped, "random" splits the provided stack randomly and
|
||||
-- "single" splits the provided stack into individual items.
|
||||
split = settings.get_string("autodrops_split", "single")
|
||||
}
|
||||
|
||||
|
||||
-- Activates the autodrops system.
|
||||
function autodrops.activate()
|
||||
if settings.get_bool("autodrops_active", true) then
|
||||
minetestex.register_on_nodedrops(autodrops.node_drops_handler)
|
||||
end
|
||||
end
|
||||
|
||||
--- Drops the given ItemStacks at the given position, based on the settings.
|
||||
--
|
||||
-- @param position The position at which to drop the items.
|
||||
-- @param stacks The array of ItemStacks to drop.
|
||||
function autodrops.drop(position, stacks)
|
||||
for index, stack in ipairs(stacks) do
|
||||
if autodrops.split == "random" then
|
||||
autodrops.drop_random(position, stack)
|
||||
elseif autodrops.split == "single" then
|
||||
autodrops.drop_single(position, stack)
|
||||
elseif autodrops.split == "stack" then
|
||||
autodrops.drop_stack(position, stack)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Drops the given stack from the given position by splitting it into random
|
||||
-- amounts.
|
||||
--
|
||||
-- @param position The position at which the items should spawn.
|
||||
-- @param stack The ItemStack to drop.
|
||||
function autodrops.drop_random(position, stack)
|
||||
local name = stack:get_name()
|
||||
local remaining = stack:get_count()
|
||||
|
||||
while remaining > 0 do
|
||||
local count = random.next_int(1, remaining + 1)
|
||||
local item_string = name .. " " .. tostring(count)
|
||||
|
||||
itemutil.blop(position, item_string)
|
||||
|
||||
remaining = remaining - count;
|
||||
end
|
||||
end
|
||||
|
||||
--- Drops the given stack from the given position by splitting it into single
|
||||
-- items.
|
||||
--
|
||||
-- @param position The position at which the items should spawn.
|
||||
-- @param stack The ItemStack to drop.
|
||||
function autodrops.drop_single(position, stack)
|
||||
local name = stack:get_name()
|
||||
|
||||
for counter = 1, stack:get_count(), 1 do
|
||||
itemutil.blop(position, name, 4, 3, 4)
|
||||
end
|
||||
end
|
||||
|
||||
--- Drops the given stack from the given position.
|
||||
--
|
||||
-- @param position The position at which the items should spawn.
|
||||
-- @param stack The ItemStack to drop.
|
||||
function autodrops.drop_stack(position, stack)
|
||||
itemutil.blop(position, stack:to_string())
|
||||
end
|
||||
|
||||
--- The handler which is registered for handling the node drops.
|
||||
--
|
||||
-- @param position The position at which the drop occured.
|
||||
-- @param drops The array of ItemStacks which are dropped.
|
||||
-- @param player The player which originated the event.
|
||||
-- @param handled If the event has already been handled or not.
|
||||
-- @return true, because the event has been handled by this function.
|
||||
function autodrops.node_drops_handler(position, drops, player, handled)
|
||||
autodrops.drop(position, drops)
|
||||
return true
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
utils
|
|
@ -0,0 +1,35 @@
|
|||
--[[
|
||||
Copyright (c) 2015, Robert 'Bobby' Zenz
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
--]]
|
||||
|
||||
|
||||
local base_path = minetest.get_modpath(minetest.get_current_modname())
|
||||
|
||||
|
||||
dofile(base_path .. "/autodrops.lua")
|
||||
|
||||
|
||||
autodrops.activate()
|
||||
|
|
@ -0,0 +1 @@
|
|||
../deps/minetest-australopithecus-worldgen-utils/deps/minetest-australopithecus-utils/utils
|
Loading…
Reference in New Issue