Updated several mods for Minetest 0.4.16

castles modpack, areas, biome_lib, blox, boost_cart, plantlife modpack
caverealms, coloredwood, concrete, currency, farming redo, home decor,
ilights, mesecons, moreores, pipeworks, signs_lib, technic, unified inventory
unified bricks, unified dyes, worldedit, and xban2
master
Vanessa Ezekowitz 2017-06-16 18:12:21 -04:00
parent b8cd2f723c
commit 75e0a665ce
148 changed files with 3555 additions and 1555 deletions

View File

@ -69,7 +69,7 @@ minetest.register_entity("anvil:item",{
})
local remove_item = function(pos, node)
local objs = minetest.env:get_objects_inside_radius({x = pos.x, y = pos.y + item_displacement, z = pos.z}, .5)
local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y + item_displacement, z = pos.z}, .5)
if objs then
for _, obj in ipairs(objs) do
if obj and obj:get_luaentity() and obj:get_luaentity().name == "anvil:item" then
@ -80,13 +80,13 @@ local remove_item = function(pos, node)
end
local update_item = function(pos, node)
local meta = minetest.env:get_meta(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if not inv:is_empty("input") then
pos.y = pos.y + item_displacement
tmp.nodename = node.name
tmp.texture = inv:get_stack("input", 1):get_name()
local e = minetest.env:add_entity(pos,"anvil:item")
local e = minetest.add_entity(pos,"anvil:item")
local yaw = math.pi*2 - node.param2 * math.pi/2
e:setyaw(yaw)
end
@ -180,12 +180,13 @@ minetest.register_node("anvil:anvil", {
on_rightclick = function(pos, node, clicker, itemstack)
if itemstack:get_count() == 0 then
local meta = minetest.env:get_meta(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if not inv:is_empty("input") then
local return_stack = inv:get_stack("input", 1)
inv:set_stack("input", 1, nil)
clicker:get_inventory():add_item("main", return_stack)
local wield_index = clicker:get_wield_index()
clicker:get_inventory():set_stack("main", wield_index, return_stack)
remove_item(pos, node)
return return_stack
end
@ -193,7 +194,7 @@ minetest.register_node("anvil:anvil", {
local this_def = minetest.registered_nodes[node.name]
if this_def.allow_metadata_inventory_put(pos, "input", 1, itemstack:peek_item(), clicker) > 0 then
local s = itemstack:take_item()
local meta = minetest.env:get_meta(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:add_item("input", s)
update_item(pos,node)
@ -214,7 +215,8 @@ minetest.register_node("anvil:anvil", {
if not inv:is_empty("input") then
local return_stack = inv:get_stack("input", 1)
inv:set_stack("input", 1, nil)
puncher:get_inventory():add_item("main", return_stack)
local wield_index = puncher:get_wield_index()
puncher:get_inventory():set_stack("main", wield_index, return_stack)
remove_item(pos, node)
end
end

65
anvil/locale/es.po Normal file
View File

@ -0,0 +1,65 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-07 22:17-0700\n"
"PO-Revision-Date: 2017-04-20 19:05 -0500\n"
"Last-Translator: Carlos Barraza <carlosbarrazaes@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Español\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: init.lua:19
msgid "Steel blacksmithing hammer"
msgstr "Martillo de acero para la herrería"
#: init.lua:20
msgid "A tool for repairing other tools at a blacksmith's anvil."
msgstr "Es una herramienta para reparar otras herramientas en el yunque del herrero"
#: init.lua:21
msgid ""
"Use this hammer to strike blows upon an anvil bearing a damaged tool and you "
"can repair it. It can also be used for smashing stone, but it is not well "
"suited to this task."
msgstr ""
"Use este martillo para dar golpes sobre el yunque donde puso la herramienta dañada"
"Tambien puede ser usado para romper piedra pero no es muy adecuado para esa tarea."
#: init.lua:98
msgid "Anvil"
msgstr "Yunque"
#: init.lua:99
msgid ""
"A tool for repairing other tools in conjunction with a blacksmith's hammer."
msgstr "Es una herramienta para reparar de herramientas dañadas en conjunto con el martillo del herrero."
#: init.lua:100
msgid ""
"Right-click on this anvil with a damaged tool to place the damaged tool upon "
"it. You can then repair the damaged tool by striking it with a blacksmith's "
"hammer. Repeated blows may be necessary to fully repair a badly worn tool. "
"To retrieve the tool either punch or right-click the anvil with an empty "
"hand."
msgstr ""
"Haga clic derecho sobre este yunque con una herramienta dañada"
"Puede reparar la herramienta dañada golpeándola con el martillo del herrero"
"Para reparar completamente una herramienta puede dar varios golpes"
"Para sacar la herramienta, golpeela con la mano vacia o tambien con un clic derecho"
#: init.lua:155
msgid "This anvil is for damaged tools only."
msgstr "Este yunque es sólo para herramientas dañadas"
#: init.lua:267
msgid "Your @1 has been repaired successfully."
msgstr "Su @1 ha sido reparado correctamente."

View File

@ -7,7 +7,7 @@ Configuration
If you wish to specify configuration options, such as whether players are
allowed to protect their own areas with the `protect` command (disabled by
default), you should check config.lua and set the appropriate settings in your
default), you should check settings.lua and set the appropriate settings in your
server's configuration file (probably `minetest.conf`).

View File

@ -66,7 +66,7 @@ local humidity_persistence = 0.5
local humidity_scale = 250
local time_scale = 1
local time_speed = tonumber(minetest.setting_get("time_speed"))
local time_speed = tonumber(minetest.settings:get("time_speed"))
if time_speed and time_speed > 0 then
time_scale = 72 / time_speed
@ -717,7 +717,7 @@ end
-- Check for infinite stacks
if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
if minetest.get_modpath("unified_inventory") or not minetest.settings:get_bool("creative_mode") then
biome_lib.expect_infinite_stacks = false
else
biome_lib.expect_infinite_stacks = true

View File

@ -103,12 +103,12 @@ for _, nodeclass in ipairs(NodeClass) do
minetest.register_node("blox:stone_"..nodeclass, {
description = "Blox stone "..nodeclass,
drawtype = "mesh",
tiles = {
{ name = "default_stone.png", color = 0xffffffff },
},
overlay_tiles = {
"blox_stone_"..nodeclass..".png"
},
mesh = "blox_block_with_overlay.obj",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
paramtype = "light",
@ -123,12 +123,12 @@ for _, nodeclass in ipairs(NodeClass) do
minetest.register_node("blox:cobble_"..nodeclass, {
description = "Blox cobble "..nodeclass,
drawtype = "mesh",
tiles = {
{ name = "default_cobble.png", color = 0xffffffff },
},
overlay_tiles = {
"blox_cobble_"..nodeclass..".png"
},
mesh = "blox_block_with_overlay.obj",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
paramtype = "light",
@ -143,12 +143,12 @@ for _, nodeclass in ipairs(NodeClass) do
minetest.register_node("blox:wood_"..nodeclass, {
description = "Blox wood "..nodeclass,
drawtype = "mesh",
tiles = {
{ name = "default_wood.png", color = 0xffffffff },
},
overlay_tiles = {
"blox_wood_"..nodeclass..".png"
},
mesh = "blox_block_with_overlay.obj",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
paramtype = "light",

View File

@ -231,7 +231,7 @@ function cart_entity:on_step(dtime)
local acc = nil
local acc_meta = minetest.get_meta(pos):get_string("cart_acceleration")
if acc_meta == "halt" then
if acc_meta == "halt" and not self.punched then
-- Stop rail
vel = {x=0, y=0, z=0}
acc = false

View File

@ -9,6 +9,7 @@ boost_cart.punch_speed_max = 7
if not boost_cart.modpath then
-- For Minetest 0.4.12 and older that don't look at the "mod.conf" file
error("\nWrong mod directory name! Please change it to 'boost_cart'.\n" ..
"See also: http://dev.minetest.net/Installing_Mods")
end

1
boost_cart/mod.conf Normal file
View File

@ -0,0 +1 @@
name = boost_cart

View File

@ -1,4 +1,12 @@
boost_cart:register_rail(":default:rail", {
-- Common rail registrations
local regular_rail_itemname = "default:rail"
if minetest.registered_nodes["carts:rail"] then
-- MTG Compatibility
regular_rail_itemname = "carts:rail"
end
boost_cart:register_rail(":"..regular_rail_itemname, {
description = "Rail",
tiles = {
"carts_rail_straight.png", "carts_rail_curved.png",

View File

@ -1,4 +1,9 @@
local S = biome_lib.intllib
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
-- Basket
@ -71,7 +76,7 @@ for i, berry in ipairs(bushes_classic.bushes) do
else
minetest.register_craftitem(":bushes:"..berry, {
description = desc,
description = S(desc),
inventory_image = "bushes_"..berry..".png",
groups = {berry = 1, [berry] = 1},
on_use = minetest.item_eat(1),

View File

@ -3,7 +3,12 @@
--
-- License: WTFPL
local S = biome_lib.intllib
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
bushes_classic = {}
@ -17,7 +22,7 @@ bushes_classic.bushes = {
}
bushes_classic.bushes_descriptions = {
"Strawberry",
"Strawberry",
"Blackberry",
"Blueberry",
"Raspberry",

View File

@ -0,0 +1,43 @@
# Traducido por Carlos Barraza
Strawberry = Frutilla
Blackberry = Mora
Blueberry = Arándano
Raspberry = Frambuesa
Gooseberry = Grosella
Mixed Berry = Mezcla de Baya
Basket with Strawberry Pies = Cesta con Pasteles de Frutilla
Basket with Blackberry Pies = Cesta con Pasteles de Mora
Basket with Blueberry Pies = Cesta con Pasteles de Arándano
Basket with Raspberry Pies = Cesta con Pasteles de Frambuesa
Basket with Gooseberry Pies = Cesta con Pasteles de Grosella
Basket with Mixed Berry Pies = Cesta con Pasteles de Mezcla de Baya
currently fruitless = Actualmente infructuoso
Strawberry Bush = Arbusto de Frutilla
Blackberry Bush = Arbusto de Mora
Blueberry Bush = Arbusto de Arándano
Raspberry Bush = Arbusto de Frambuesa
Gooseberry Bush = Arbusto de Grosella
Mixed Berry Bush = Arbusto de Mezcla de Baya
Basket = Cesta
Sugar = Azúcar
Raw Strawberry pie = Pastel de Frutilla Crudo
Raw Blackberry pie = Pastel de Mora Crudo
Raw Blueberry pie = Pastel de Arándano Crudo
Raw Raspberry pie = Pastel de Frambuesa Crudo
Raw Gooseberry pie = Pastel de Grosella Crudo
Raw Mixed Berry pie = Pastel de Mezcla de Bayas Cruda
Cooked Strawberry pie = Pastel de Frutilla Cocido
Cooked Blackberry pie = Pastel de Mora Cocido
Cooked Blueberry pie = Pastel de Arándano Cocido
Cooked Raspberry pie = Pastel de Frambuesa Cocido
Cooked Gooseberry pie = Pastel de Grosella Cocido
Cooked Mixed Berry pie = Pastel de Mezcla de Bayas Cocido
Slice of Strawberry pie = Rebanada de Pastel de Frutilla
Slice of Blackberry pie = Rebanada de Pastel de Mora
Slice of Blueberry pie = Rebanada de Pastel de Arándano
Slice of Raspberry pie = Rebanada de Pastel de Frambuesa
Slice of Gooseberry pie = Rebanada de Pastel de Grosella
Slice of Mixed Berry pie = Rebanada de Pastel de Mezcla de Bayas
[Bushes] Loaded. = [Arbustos] Cargado.

View File

@ -1,4 +1,9 @@
local S = biome_lib.intllib
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
plantlife_bushes = {}

View File

@ -0,0 +1,30 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-27 00:59-0700\n"
"PO-Revision-Date: 2017-04-21 19:47-0500\n"
"Last-Translator: Carlos Barraza <carlosbarrazaes@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Español\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: hides.lua:9
msgid "Hides"
msgstr "Escondite"
#: straw.lua:13
msgid "Bound Straw"
msgstr "Paja amarrada"
#: straw.lua:22
msgid "Training Dummy"
msgstr "Maniqui de Entrenamiento"

261
castle_gates/locale/es.po Normal file
View File

@ -0,0 +1,261 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-01 23:41-0700\n"
"PO-Revision-Date: 2017-04-28 11:56-0400\n"
"Last-Translator: Carlos Barraza\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Español\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: doc.lua:11
msgid "Heavy wooden bars designed to prevent entry even to siege equipment."
msgstr ""
"Barras de madera pesadas diseñadas para evitar la entrada incluso a equipo de "
"asedio"
#: doc.lua:12
msgid ""
"Place these bars in a structure together and they will slide as a unified "
"gate when clicked on."
msgstr ""
"Coloque estas barras en una estructura juntas y se deslizarán como si "
"estuvieran unidas cuando se le hace clic"
#: doc.lua:14
msgid ""
"The bottom edge of a portcullis gate, with knobs to lock securely into the "
"floor."
msgstr ""
"Es el borde inferior de una puerta rastrillo, con perillas para bloquearla con "
"seguridad en el piso"
#: doc.lua:15
msgid ""
"This block can be used to define the edge of a portcullius that meets up "
"with another gate, should you have an arrangement like that. Otherwise it's "
"just decorative."
msgstr ""
"Este bloque puede ser usado para definir el borde de una puerta rastrillo "
"que esta cerca de otra puerta, si tiene varias puertas independientes, "
"de lo contrario es simplemente decorativo"
#: doc.lua:17
msgid "A basic gate panel."
msgstr "Un panel básico de puerta"
#: doc.lua:18
msgid ""
"This gate segment will move in unison with adjoining gate segments when "
"right-clicked."
msgstr ""
"Este segmento de puerta se moverá junto con los demas segmentos de puerta "
"adyacente cuando se haga clic con el botón derecho del ratón"
#: doc.lua:20
msgid "A gate panel with a defined edge."
msgstr "Un panel de puerta con un borde."
#: doc.lua:21
msgid ""
"The darkened edge of this panel marks the edge of the gate it's a part of. "
"You can use these when building double doors to ensure the two parts swing "
"separately, for example. Note that edges aren't strictly necessary for gates "
"that stand alone."
msgstr ""
"El borde oscurecido de este panel marca el limite de la puerta."
"Usted puede utilizar estos bloques para construir puertas dobles para asegurar "
"que las dos puertas funcionen por separado, por ejemplo. Tenga en cuenta que "
"los bordes no son estrictamente necesarios para las puertas individuales"
#: doc.lua:23
msgid "A gate edge with a handle."
msgstr "Un panel de puerta con pestillo"
#: doc.lua:24
msgid ""
"The handle is basically decorative, a door this size can be swung by "
"clicking anywhere on it. But the darkened edge of this panel is useful for "
"defining the edge of a gate when it abuts a partner to the side."
msgstr ""
"El pestillo es básicamente decorativo, una puerta de este tamaño se puede "
"abrir haciendo clic en cualquier parte de ella. Pero el borde oscuro de este "
"panel es útil para definir el borde de la puerta cuando hay otra puerta al "
"lado."
#: doc.lua:26
msgid "A hinged gate segment that allows a gate to swing."
msgstr "Un segmento de puerta con bisagra permite que la puerta se abra."
#: doc.lua:27
msgid ""
"If you have more than one hinge in your gate, make sure the hinges line up "
"correctly otherwise the gate will not be able to swing. The hinge is the "
"protruding block along the edge of the gate panel."
msgstr ""
"Si tiene más de una bisagra en su puerta, asegúrese de que las bisagras se "
"alineen correctamente, de lo contrario la puerta no será capaz de abrirse. "
"la bisagra es el bloque sobresaliente a lo largo del borde del panel de la "
"puerta."
#: doc.lua:29
msgid "A block with a slot to allow an adjacent sliding gate through."
msgstr ""
"Un bloque con una ranura en el medio para que una puerta deslizante pueda "
"pasar a través de ella."
#: doc.lua:30
msgid ""
"This block is designed to extend into a neighboring node that a sliding gate "
"passes through, to provide a tight seal for the gate to move through without "
"allowing anything else to squeeze in."
msgstr ""
"Este bloque está diseñado para un nodo pueda deslizarse a travéz de este, para "
"proporcionar un cierre hermético que solo deja pasar la puerta sin permitir "
"entrar nada mas."
#: doc.lua:32
msgid ""
"A block that extends into an adjacent node to provide a tight seal for a "
"large gate."
msgstr ""
"Un bloque con una ranura en el lado para que una puerta deslizante pueda "
"pasar a través de ella."
#: doc.lua:33
msgid ""
"Two nodes cannot occupy the same space, but this block extends into a "
"neighboring node's space to allow for gates to form a tight seal. It can be "
"used with sliding gates or swinging gates."
msgstr ""
"Dos nodos no pueden utilizar el mismo espacio, pero este nodo se extiende al "
"espacio de un nodo vecino para permitir que las puertas formen un cierre "
"hermético. Puede utilizarse con puertas deslizantes y con las puertas que se "
"abren rotando."
#: doc.lua:37
msgid "Gates"
msgstr "Puertas"
#: doc.lua:38
msgid ""
"Gates are large multi-node constructions that swing on hinges or slide out "
"of the way when triggered."
msgstr ""
"Las puertas grandes son construcciones multi nodo que se abren usando bisagras "
"o se deslizan hacia arriba cuando se activan"
#: doc.lua:43
msgid "Gate construction"
msgstr "Construcción de Puertas"
#: doc.lua:45
msgid ""
"Gates are multi-node constructions, usually (though not always) consisting "
"of multiple node types that fit together into a unified whole. The "
"orientation of gate nodes is significant, so a screwdriver will be a helpful "
"tool when constructing gates.\n"
"\n"
"A gate's extent is determined by a \"flood fill\" operation. When you "
"trigger a gate block, all compatible neighboring blocks will be considered "
"part of the same structure and will move in unison. Only gate blocks that "
"are aligned with each other will be considered part of the same gate. If you "
"wish to build adjoining gates (for example, a large pair of double doors "
"that meet in the center) you'll need to make use of gate edge blocks to "
"prevent it all from being considered one big door. Note that if your gate "
"does not abut any other gates you don't actually need to define its edges "
"this way - you don't have to use edge blocks in this case.\n"
"\n"
"If a gate has no hinge nodes it will be considered a sliding gate. When "
"triggered, the gate code will search for a direction that the gate can slide "
"in and will move it in that direction at a rate of one block-length per "
"second. Once it reaches an obstruction it will stop, and when triggered "
"again it will try sliding in the opposite direction.\n"
"\n"
"If a gate has hinge nodes then triggering it will cause the gate to try "
"swinging around the hinge. If the gate has multiple hinges and they don't "
"line up properly the gate will be unable to move. Note that the gate can "
"only exist in 90-degree increments of orientation, but the gate still looks "
"for obstructions in the region it is swinging through and will not swing if "
"there's something in the way."
msgstr ""
"Las puertas son generalmente construcciones multi nodo (aunque no siempre), "
"que consisten de múltiples tipos de nodos que se acomodan en un todo "
"unificado. La orientación de los nodos de la puerta es importante, por lo que "
"un destornillador será útil para construir las puertas.\n"
"\n"
"La extención de una puerta se determina mediante una operación de \"Llenado de "
"Inundación\". Al activar un bloque de la puerta, todos los bloques vecinos "
"compatibles se considerán parte de la misma estructura y se moveran al unísono. "
"Sólo los bloques de compuerta que estén alineados entre sí se considerarán "
"parte de la misma puerta. Si desea construir puertas adyacentes (por ejemplo, "
"un gran par de puertas dobles que se abran en el centro) tendrá que hacer uso "
"de bloques de borde de puerta para evitar que todo sea considerado solo una "
"gran puerta. Tenga en cuenta que si su puerta no se apoya en ninguna otra "
"puerta, no necesita usar los bordes de puerta en este caso.\n"
"\n"
"Si una puerta no tiene nodos de bisagra se considerará una puerta deslizante. "
"Cuando se ejecuta el codigo de la puerta buscará una dirección en la que la "
"puerta pueda deslizarse y se moverá en esa dirección a una velocidad de un "
"bloque por segundo. Una vez que llega a una obstrucción se detendrá, y cuando "
"se ejecute de nuevo tratará de deslizarse en la dirección opuesta.\n"
"\n"
"Si una puerta tiene nodos de bisagra, entonces al activar la puerta tratara de "
"girar al rededor de la bisagra. Si la puerta tiene bisagras múltiples y no "
"estan bien alineadas, la puerta no podrá moverse. Tenga en cuenta que la "
"puerta sólo puede existir en incrementos de 90 grados de orientación, pero la "
"puerta todavía busca obstrucciones en la región que está moviéndose y no "
"girara si hay algo en el camino."
#: doors.lua:8
msgid "Oak Door"
msgstr "Puerta de Roble"
#: doors.lua:22
msgid "Jail Door"
msgstr "Puerta de Cárcel"
#: doors.lua:43
msgid "Jail Bars"
msgstr ""
#: gate_slots.lua:36
msgid "Stonebrick"
msgstr "Ladrillo de Piedra"
#: gate_slots.lua:45
msgid "@1 Gate Slot"
msgstr "Espacio para Puerta de @1"
#: gate_slots.lua:70
msgid "@1 Gate Slot Reverse"
msgstr "Espacio para Puerta Invertido de @1"
#: gates.lua:7
msgid "Portcullis Bars"
msgstr "Barras de la Puerta Rastrillo"
#: gates.lua:37
msgid "Portcullis Bottom"
msgstr "Terminación de la Puerta Rastrillo"
#: gates.lua:104
msgid "Gate Door"
msgstr "Porción de la Puerta"
#: gates.lua:136
msgid "Gate Door Edge"
msgstr "Borde de la Puerta"
#: gates.lua:175
msgid "Gate Door With Handle"
msgstr "Pestillo de la Puerta"
#: gates.lua:218
msgid "Gate Door With Hinge"
msgstr "Bisagra de la Puerta"

View File

@ -0,0 +1,54 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-01 23:52-0700\n"
"PO-Revision-Date: 2017-04-28 12:40-0400\n"
"Last-Translator: Carlos Barraza\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Español\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: brasier.lua:7
msgid "A brasier for producing copious amounts of light and heat."
msgstr "Un brasero para producir grandes cantidades de luz y calor."
#: brasier.lua:8
msgid ""
"To ignite the brasier place a flammable fuel in its inventory slot. A lump "
"of coal will burn for about half an hour."
msgstr ""
"Para encender el brasero coloque un combustible inflamable en su ranura de "
"inventario. Un trozo de carbón arderá durante media hora."
#: brasier.lua:107
msgid "Floor Brasier"
msgstr "Brasero con Patas"
#: brasier.lua:156
msgid "Stonebrick"
msgstr "Ladrillo de piedra"
#: brasier.lua:228
msgid "@1 Brasier"
msgstr "Brasero de @1"
#: init.lua:17
msgid "Light Block"
msgstr "Bloque de luz"
#: init.lua:37
msgid "Chandelier"
msgstr "Candelero"
#: init.lua:76
msgid "Chandelier Chain"
msgstr "Colgante de Candelero"

View File

@ -186,7 +186,7 @@ function caverealms:nodeupdate_single(p, delay)
end
if minetest.get_item_group(n.name, "attached_node") ~= 0 then
if not check_attached_node(p, n) then
if not caverealms:check_attached_node(p, n) then
caverealms:drop_attached_node(p)
caverealms:nodeupdate(p)
end

View File

@ -86,10 +86,10 @@ minetest.register_node("caverealms:thin_ice", {
--alternate version for stalactites
minetest.register_node("caverealms:hanging_thin_ice", {
description = "Thin Ice",
description = "Thin Ice (hanging)",
tiles = {"caverealms_thin_ice.png"},
is_ground_content = true,
groups = {cracky=3},
groups = {cracky=3, not_in_creative_inventory = 1},
sounds = default.node_sound_glass_defaults(),
use_texture_alpha = true,
drawtype = "glasslike",

View File

@ -18,7 +18,7 @@
coloredwood = {}
coloredwood.enable_stairsplus = true
if minetest.setting_getbool("coloredwood_enable_stairsplus") == false or not minetest.get_modpath("moreblocks") then
if minetest.settings:get_bool("coloredwood_enable_stairsplus") == false or not minetest.get_modpath("moreblocks") then
coloredwood.enable_stairsplus = false
end

8
concrete/locale/es.txt Normal file
View File

@ -0,0 +1,8 @@
# technic_concrete traducido por Carlos Barraza
Rebar = Barra de refuerzo
Concrete Block = Bloque de concreto
Blast-resistant Concrete Block = Bloque de concreto resistente a explosiones
Concrete Post Platform = Plataforma de concreto
Concrete Post = Postes de concreto

View File

@ -1,5 +1,9 @@
barter = {}
-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
barter.chest = {}
barter.chest.formspec = {
main = "size[8,9]"..
@ -7,20 +11,20 @@ barter.chest.formspec = {
"list[current_name;pl2;5,0;3,4;]"..
"list[current_player;main;0,5;8,4;]",
pl1 = {
start = "button[3,1;1,1;pl1_start;Start]",
start = "button[3,1;1,1;pl1_start;" .. S("Start") .. "]",
player = function(name) return "label[3,0;"..name.."]" end,
accept1 = "button[3,1;1,1;pl1_accept1;Confirm]"..
"button[3,2;1,1;pl1_cancel;Cancel]",
accept2 = "button[3,1;1,1;pl1_accept2;Exchange]"..
"button[3,2;1,1;pl1_cancel;Cancel]",
accept1 = "button[3,1;1,1;pl1_accept1;" .. S("Confirm") .. "]"..
"button[3,2;1,1;pl1_cancel;" .. S("Cancel") .. "]",
accept2 = "button[3,1;1,1;pl1_accept2;" .. S("Exchange") .. "]"..
"button[3,2;1,1;pl1_cancel;" .. S("Cancel") .. "]",
},
pl2 = {
start = "button[4,1;1,1;pl2_start;Start]",
start = "button[4,1;1,1;pl2_start;" .. S("Start") .. "]",
player = function(name) return "label[4,0;"..name.."]" end,
accept1 = "button[4,1;1,1;pl2_accept1;Confirm]"..
"button[4,2;1,1;pl2_cancel;Cancel]",
accept2 = "button[4,1;1,1;pl2_accept2;Exchange]"..
"button[4,2;1,1;pl2_cancel;Cancel]",
accept1 = "button[4,1;1,1;pl2_accept1;" .. S("Confirm") .. "]"..
"button[4,2;1,1;pl2_cancel;" .. S("Cancel") .. "]",
accept2 = "button[4,1;1,1;pl2_accept2;" .. S("Exchange") .. "]"..
"button[4,2;1,1;pl2_cancel;" .. S("Cancel") .. "]",
},
}
@ -90,7 +94,7 @@ end
minetest.register_node("currency:barter", {
drawtype = "nodebox",
description = "Barter Table",
description = S("Barter Table"),
paramtype = "light",
paramtype2 = "facedir",
tiles = {"barter_top.png",
@ -111,7 +115,7 @@ minetest.register_node("currency:barter", {
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", "Barter Table")
meta:set_string("infotext", S("Barter Table"))
meta:set_string("pl1","")
meta:set_string("pl2","")
barter.chest.update_formspec(meta)

View File

@ -1,26 +1,30 @@
-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_craftitem("currency:minegeld", {
description = "1 MineGeld Note",
description = S("1 MineGeld Note"),
inventory_image = "minegeld.png",
stack_max = 30000,
groups = {minegeld = 1}
})
minetest.register_craftitem("currency:minegeld_5", {
description = "5 MineGeld Note",
description = S("5 MineGeld Note"),
inventory_image = "minegeld_5.png",
stack_max = 30000,
groups = {minegeld = 1}
})
minetest.register_craftitem("currency:minegeld_10", {
description = "10 MineGeld Note",
description = S("10 MineGeld Note"),
inventory_image = "minegeld_10.png",
stack_max = 30000,
groups = {minegeld = 1}
})
minetest.register_craftitem("currency:minegeld_bundle", {
description = "Bundle of random Minegeld notes",
description = S("Bundle of random Minegeld notes"),
inventory_image = "minegeld_bundle.png",
stack_max = 30000,
})

View File

@ -1,2 +1,4 @@
default
pipeworks?
intllib?
loot?
pipeworks?

View File

@ -1,5 +1,9 @@
players_income = {}
-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime;
@ -11,7 +15,7 @@ minetest.register_globalstep(function(dtime)
players_income[name] = 0
end
players_income[name] = 1
minetest.log("info", "[Currency] basic income for "..name.."")
minetest.log("info", "[Currency] "..S("basic income for @1", name))
end
end
end)
@ -27,7 +31,7 @@ earn_income = function(player)
local inv = player:get_inventory()
inv:add_item("main", {name="currency:minegeld_5", count=count})
players_income[name] = 0
minetest.log("info", "[Currency] added basic income for "..name.." to inventory")
minetest.log("info", "[Currency] "..S("added basic income for @1 to inventory", name))
end
end

View File

@ -1,20 +1,24 @@
minetest.log("info", " Currency mod loading... ")
local modpath = minetest.get_modpath("currency")
-- internationalization boilerplate
local S, NS = dofile(modpath.."/intllib.lua")
minetest.log("info", S("Currency mod loading..."))
dofile(modpath.."/craftitems.lua")
minetest.log("info", "[Currency] Craft_items Loaded!")
minetest.log("info", "[Currency] "..S("Craft_items Loaded!"))
dofile(modpath.."/shop.lua")
minetest.log("info", "[Currency] Shop Loaded!")
minetest.log("info", "[Currency] "..S("Shop Loaded!"))
dofile(modpath.."/barter.lua")
minetest.log("info", "[Currency] Barter Loaded!")
minetest.log("info", "[Currency] "..S("Barter Loaded!"))
dofile(modpath.."/safe.lua")
minetest.log("info", "[Currency] Safe Loaded!")
minetest.log("info", "[Currency] "..S("Safe Loaded!"))
dofile(modpath.."/crafting.lua")
minetest.log("info", "[Currency] Crafting Loaded!")
minetest.log("info", "[Currency] "..S("Crafting Loaded!"))
if minetest.setting_getbool("creative_mode") then
minetest.log("info", "[Currency] Creative mode in use, skipping basic income.")
minetest.log("info", "[Currency] "..S("Creative mode in use, skipping basic income."))
else
dofile(modpath.."/income.lua")
minetest.log("info", "[Currency] Income Loaded!")
minetest.log("info", "[Currency] "..S("Income Loaded!"))
end

45
currency/intllib.lua Normal file
View File

@ -0,0 +1,45 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -0,0 +1,177 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-20 13:58-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: barter.lua:14 barter.lua:22
msgid "Start"
msgstr ""
#: barter.lua:16 barter.lua:24
msgid "Confirm"
msgstr ""
#: barter.lua:17 barter.lua:19 barter.lua:25 barter.lua:27
msgid "Cancel"
msgstr ""
#: barter.lua:18 barter.lua:26 shop.lua:20
msgid "Exchange"
msgstr ""
#: barter.lua:97 barter.lua:118
msgid "Barter Table"
msgstr ""
#: craftitems.lua:6
msgid "1 MineGeld Note"
msgstr ""
#: craftitems.lua:13
msgid "5 MineGeld Note"
msgstr ""
#: craftitems.lua:20
msgid "10 MineGeld Note"
msgstr ""
#: craftitems.lua:27
msgid "Bundle of random Minegeld notes"
msgstr ""
#: income.lua:18
msgid "basic income for @1"
msgstr ""
#: income.lua:34
msgid "added basic income for @1 to inventory"
msgstr ""
#: init.lua:6
msgid "Currency mod loading..."
msgstr ""
#: init.lua:9
msgid "Craft_items Loaded!"
msgstr ""
#: init.lua:11
msgid "Shop Loaded!"
msgstr ""
#: init.lua:13
msgid "Barter Loaded!"
msgstr ""
#: init.lua:15
msgid "Safe Loaded!"
msgstr ""
#: init.lua:17
msgid "Crafting Loaded!"
msgstr ""
#: init.lua:20
msgid "Creative mode in use, skipping basic income."
msgstr ""
#: init.lua:23
msgid "Income Loaded!"
msgstr ""
#: safe.lua:29
msgid "Safe"
msgstr ""
#: safe.lua:44
msgid "Safe (owned by @1)"
msgstr ""
#: safe.lua:61 safe.lua:70 safe.lua:79
msgid "@1 tried to access a safe belonging to @2 at @3"
msgstr ""
#: safe.lua:86
msgid "@1 moves stuff in safe at @2"
msgstr ""
#: safe.lua:89
msgid "@1 moves stuff to safe at @2"
msgstr ""
#: safe.lua:92
msgid "@1 takes stuff from safe at @2"
msgstr ""
#: shop.lua:11
msgid "Customer gives (pay here!)"
msgstr ""
#: shop.lua:13
msgid "Customer gets:"
msgstr ""
#: shop.lua:15
msgid "Owner wants:"
msgstr ""
#: shop.lua:17
msgid "Owner gives:"
msgstr ""
#: shop.lua:26
msgid "Customers gave:"
msgstr ""
#: shop.lua:28
msgid "Your stock:"
msgstr ""
#: shop.lua:30
msgid "You want:"
msgstr ""
#: shop.lua:32
msgid "In exchange, you give:"
msgstr ""
#: shop.lua:34
msgid "Owner, Use (E)+Place (right mouse button) for customer interface"
msgstr ""
#: shop.lua:88
msgid "Shop"
msgstr ""
#: shop.lua:102
msgid "Exchange shop (owned by @1)"
msgstr ""
#: shop.lua:151
msgid "This is your own shop, you can't exchange to yourself!"
msgstr ""
#: shop.lua:188
msgid "Exchanged!"
msgstr ""
#: shop.lua:191
msgid "Exchange can not be done, contact the shop owner."
msgstr ""
#: shop.lua:193
msgid "Exchange can not be done, check if you put all items!"
msgstr ""

30
currency/loot.lua Normal file
View File

@ -0,0 +1,30 @@
if not minetest.get_modpath("loot") then
return
end
loot.register_loot({
weights = { generic = 50 },
payload = {
stack = ItemStack("currency:minegeld"),
min_size = 1,
max_size = 250,
},
})
loot.register_loot({
weights = { generic = 50 },
payload = {
stack = ItemStack("currency:minegeld_5"),
min_size = 1,
max_size = 50,
},
})
loot.register_loot({
weights = { generic = 50 },
payload = {
stack = ItemStack("currency:minegeld_10"),
min_size = 1,
max_size = 10,
},
})

View File

@ -1,3 +1,7 @@
-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
function default.get_safe_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec =
@ -22,12 +26,12 @@ local function has_safe_privilege(meta, player)
end
minetest.register_node("currency:safe", {
description = "Safe",
description = S("Safe"),
inventory_image = "safe_front.png",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"safe_side.png",
"safe_side.png",
"safe_side.png",
"safe_side.png",
"safe_side.png",
"safe_side.png",
@ -37,8 +41,7 @@ minetest.register_node("currency:safe", {
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Safe (owned by "..
meta:get_string("owner")..")")
meta:set_string("infotext", S("Safe (owned by @1)", meta:get_string("owner")))
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -55,10 +58,8 @@ minetest.register_node("currency:safe", {
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a safe belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
minetest.log("action", S("@1 tried to access a safe belonging to @2 at @3",
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
return 0
end
return count
@ -66,10 +67,8 @@ minetest.register_node("currency:safe", {
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a safe belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
minetest.log("action", S("@1 tried to access a safe belonging to @2 at @3",
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
return 0
end
return stack:get_count()
@ -77,25 +76,20 @@ minetest.register_node("currency:safe", {
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_safe_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a safe belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
minetest.log("action", S("@1 tried to access a safe belonging to @2 at @3",
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in safe at "..minetest.pos_to_string(pos))
minetest.log("action", S("@1 moves stuff in safe at @2", player:get_player_name(), minetest.pos_to_string(pos)))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to safe at "..minetest.pos_to_string(pos))
minetest.log("action", S("@1 moves stuff to safe at @2", player:get_player_name(), minetest.pos_to_string(pos)))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from safe at "..minetest.pos_to_string(pos))
minetest.log("action", S("@1 takes stuff from safe at @2", player:get_player_name(), minetest.pos_to_string(pos)))
end,
on_rightclick = function(pos, node, clicker)
local meta = minetest.get_meta(pos)

View File

@ -1,38 +1,44 @@
-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
default.shop = {}
default.shop.current_shop = {}
default.shop.formspec = {
customer = function(pos)
local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z
local formspec = "size[8,9.5]"..
"label[0,0;Customer gives (pay here !)]"..
"label[0,0;" .. S("Customer gives (pay here!)") .. "]"..
"list[current_player;customer_gives;0,0.5;3,2;]"..
"label[0,2.5;Customer gets]"..
"label[0,2.5;" .. S("Customer gets:") .. "]"..
"list[current_player;customer_gets;0,3;3,2;]"..
"label[5,0;Owner wants]"..
"label[5,0;" .. S("Owner wants:") .. "]"..
"list["..list_name..";owner_wants;5,0.5;3,2;]"..
"label[5,2.5;Owner gives]"..
"label[5,2.5;" .. S("Owner gives:") .. "]"..
"list["..list_name..";owner_gives;5,3;3,2;]"..
"list[current_player;main;0,5.5;8,4;]"..
"button[3,2;2,1;exchange;Exchange]"
"button[3,2;2,1;exchange;" .. S("Exchange") .. "]"
return formspec
end,
owner = function(pos)
local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z
local formspec = "size[8,9.5]"..
"label[0,0;Customers gave:]"..
"label[0,0;" .. S("Customers gave:") .. "]"..
"list["..list_name..";customers_gave;0,0.5;3,2;]"..
"label[0,2.5;Your stock:]"..
"label[0,2.5;" .. S("Your stock:") .. "]"..
"list["..list_name..";stock;0,3;3,2;]"..
"label[5,0;You want:]"..
"label[5,0;" .. S("You want:") .. "]"..
"list["..list_name..";owner_wants;5,0.5;3,2;]"..
"label[5,2.5;In exchange, you give:]"..
"label[5,2.5;" .. S("In exchange, you give:") .. "]"..
"list["..list_name..";owner_gives;5,3;3,2;]"..
"label[0,5;Owner, Use(E)+Place(RMB) for customer interface]"..
"label[0,5;" .. S("Owner, Use (E)+Place (right mouse button) for customer interface") .. "]"..
"list[current_player;main;0,5.5;8,4;]"
return formspec
end,
}
local have_pipeworks = minetest.global_exists("pipeworks")
default.shop.check_privilege = function(listname,playername,meta)
--[[if listname == "pl1" then
if playername ~= meta:get_string("pl1") then
@ -81,10 +87,10 @@ default.shop.exchange = function(meta)
end
minetest.register_node("currency:shop", {
description = "Shop",
description = S("Shop"),
paramtype2 = "facedir",
tiles = {"shop_top.png",
"shop_top.png",
"shop_top.png",
"shop_side.png",
"shop_side.png",
"shop_side.png",
@ -95,7 +101,7 @@ minetest.register_node("currency:shop", {
after_place_node = function(pos, placer, itemstack)
local owner = placer:get_player_name()
local meta = minetest.get_meta(pos)
meta:set_string("infotext", "Exchange shop (owned by "..owner..")")
meta:set_string("infotext", S("Exchange shop (owned by @1)", owner))
meta:set_string("owner",owner)
--[[meta:set_string("pl1","")
meta:set_string("pl2","")]]
@ -104,9 +110,9 @@ minetest.register_node("currency:shop", {
inv:set_size("stock", 3*2)
inv:set_size("owner_wants", 3*2)
inv:set_size("owner_gives", 3*2)
if minetest.get_modpath("pipeworks") then pipeworks.after_place(pos) end
if have_pipeworks then pipeworks.after_place(pos) end
end,
after_dig_node = (pipeworks and pipeworks.after_dig),
after_dig_node = (have_pipeworks and pipeworks and pipeworks.after_dig),
tube = {
insert_object = function(pos, node, stack, direction)
local meta = minetest.get_meta(pos)
@ -160,7 +166,7 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
local pos = default.shop.current_shop[name]
local meta = minetest.get_meta(pos)
if meta:get_string("owner") == name then
minetest.chat_send_player(name,"This is your own shop, you can't exchange to yourself !")
minetest.chat_send_player(name,S("This is your own shop, you can't exchange to yourself!"))
else
local minv = meta:get_inventory()
local pinv = sender:get_inventory()
@ -197,12 +203,12 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
minv:remove_item("stock",item)
pinv:add_item("customer_gets",item)
end
minetest.chat_send_player(name,"Exchanged!")
minetest.chat_send_player(name,S("Exchanged!"))
else
if owners_fault then
minetest.chat_send_player(name,"Exchange can not be done, contact the shop owner.")
minetest.chat_send_player(name,S("Exchange can not be done, contact the shop owner."))
else
minetest.chat_send_player(name,"Exchange can not be done, check if you put all items !")
minetest.chat_send_player(name,S("Exchange can not be done, check if you put all items!"))
end
end
end

View File

@ -25,7 +25,7 @@ end
minetest.register_node("dryplants:juncus", {
description = "Juncus",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"dryplants_juncus_03.png"},
inventory_image = "dryplants_juncus_inv.png",
@ -67,7 +67,7 @@ minetest.register_node("dryplants:juncus", {
minetest.register_node("dryplants:juncus_02", {
description = "Juncus",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"dryplants_juncus_02.png"},
walkable = false,

View File

@ -125,7 +125,7 @@ minetest.register_node("dryplants:reedmace_top", {
minetest.register_node("dryplants:reedmace_height_2", {
description = "Reedmace, height: 2",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"dryplants_reedmace_height_2.png"},
inventory_image = "dryplants_reedmace_top.png",
@ -148,7 +148,7 @@ minetest.register_node("dryplants:reedmace_height_2", {
minetest.register_node("dryplants:reedmace_height_3", {
description = "Reedmace, height: 3",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"dryplants_reedmace_height_3.png"},
inventory_image = "dryplants_reedmace_top.png",
@ -171,7 +171,7 @@ minetest.register_node("dryplants:reedmace_height_3", {
minetest.register_node("dryplants:reedmace_height_3_spikes", {
description = "Reedmace, height: 3 & Spikes",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"dryplants_reedmace_height_3_spikes.png"},
inventory_image = "dryplants_reedmace_top.png",

7
extranodes/locale/es.txt Normal file
View File

@ -0,0 +1,7 @@
# technic_extranodes traducido por Carlos Barraza
Marble = Mármol
Marble Bricks = Ladrillos de mármol
Granite = Granito
Concrete = Concreto

View File

@ -13,6 +13,8 @@ This mod works by adding your new plant to the {growing=1} group and numbering t
Changelog:
1.25 - Added check for farming.conf setting file to disable specific crops globally (inside mod folder) or world specific (inside world folder)
1.24 - Added Hemp which can be crafted into fibre, paper, string, rope and oil.
1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also.
1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks).
1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs
@ -45,7 +47,7 @@ Changelog:
0.1 - Fixed growing bug
0.0 - Initial release
Lucky Blocks: 10 (plus 3 for default farming items)
Lucky Blocks: 11 (plus 3 for default farming items)
License of media (textures):
@ -150,4 +152,5 @@ Created by TenPlus1
farming_rhubarb_2.png
farming_rhubarb_3.png
farming_rhubarb.png
farming_rhubarb_pie.png
farming_rhubarb_pie.png
farming_hemp*.png

View File

@ -6,6 +6,60 @@
local S = farming.intllib
-- place beans
function place_beans(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt or pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
-- return if any of the nodes are not registered
if not minetest.registered_nodes[under.name] then
return
end
-- am I right-clicking on something that has a custom on_place set?
-- thanks to Krock for helping with this issue :)
local def = minetest.registered_nodes[under.name]
if def and def.on_rightclick then
return def.on_rightclick(pt.under, under, placer, itemstack)
end
-- check if pointing at bean pole
if under.name ~= "farming:beanpole" then
return
end
-- add the node and remove 1 item from the itemstack
minetest.set_node(pt.under, {name = plantname})
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
minetest.after(0.20,
farming.refill_plant,
placer,
"farming:beans",
placer:get_wield_index()
)
end
end
return itemstack
end
-- beans
minetest.register_craftitem("farming:beans", {
description = S("Green Beans"),
@ -13,39 +67,8 @@ minetest.register_craftitem("farming:beans", {
on_use = minetest.item_eat(1),
on_place = function(itemstack, placer, pointed_thing)
if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then
return
end
local nodename = minetest.get_node(pointed_thing.under).name
if nodename == "farming:beanpole" then
minetest.set_node(pointed_thing.under, {name = "farming:beanpole_1"})
minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0})
else
return
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
-- check for refill
if itemstack:get_count() == 0 then
minetest.after(0.20,
farming.refill_plant,
placer,
"farming:beans",
placer:get_wield_index()
)
end
end
return itemstack
end
return place_beans(itemstack, placer, pointed_thing, "farming:beanpole_1")
end,
})
-- beans can be used for green dye

View File

@ -140,3 +140,17 @@ minetest.register_alias("farming_plus:tomato", "farming:tomato_8")
-- Weed
minetest.register_alias("farming:weed", "default:grass_2")
-- Classic Bushes compatibility
if minetest.get_modpath("bushes_classic") then
if eth then
minetest.register_alias("bushes:strawberry", "farming:strawberry")
else
minetest.register_alias("bushes:strawberry", "farming:raspberries")
end
minetest.register_alias("bushes:blueberry", "farming:blueberries")
minetest.register_alias("bushes:raspberry", "farming:raspberries")
end

View File

@ -31,9 +31,21 @@ minetest.register_craft({
})
-- ethanol (thanks to JKMurray for this idea)
minetest.register_craftitem("farming:bottle_ethanol", {
minetest.register_node("farming:bottle_ethanol", {
description = S("Bottle of Ethanol"),
drawtype = "plantlike",
tiles = {"farming_bottle_ethanol.png"},
inventory_image = "farming_bottle_ethanol.png",
wield_image = "farming_bottle_ethanol.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_craft( {

View File

@ -48,7 +48,7 @@ crop_def.tiles = {"farming_cucumber_4.png"}
crop_def.groups.growing = 0
crop_def.drop = {
items = {
{items = {'farming:cucumber'}, rarity = 1},
{items = {'farming:cucumber 2'}, rarity = 1},
{items = {'farming:cucumber 2'}, rarity = 2},
}
}

View File

@ -0,0 +1,27 @@
--[[
Farming settings can be changed here and kept inside mod folder
even after the mod has been updated, or you can place inside
world folder for map specific settings.
--]]
-- true to enable crop/food in-game and on mapgen
farming.carrot = true
farming.potato = true
farming.tomato = true
farming.cucumber = true
farming.corn = true
farming.coffee = true
farming.coffee = true
farming.melon = true
farming.sugar = true
farming.pumpkin = true
farming.cocoa = true
farming.raspberry = true
farming.blueberry = true
farming.rhubarb = true
farming.beans = true
farming.grapes = true
farming.barley = true
farming.hemp = true
farming.donuts = true

213
farming/hemp.lua Normal file
View File

@ -0,0 +1,213 @@
local S = farming.intllib
-- hemp seeds
minetest.register_node("farming:seed_hemp", {
description = S("Hemp Seed"),
tiles = {"farming_hemp_seed.png"},
inventory_image = "farming_hemp_seed.png",
wield_image = "farming_hemp_seed.png",
drawtype = "signlike",
groups = {seed = 1, snappy = 3, attached_node = 1},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:hemp_1")
end,
})
-- harvested hemp
minetest.register_craftitem("farming:hemp_leaf", {
description = S("Hemp Leaf"),
inventory_image = "farming_hemp_leaf.png",
})
-- hemp oil
minetest.register_node("farming:hemp_oil", {
description = S("Bottle of Hemp Oil"),
drawtype = "plantlike",
tiles = {"farming_hemp_oil.png"},
inventory_image = "farming_hemp_oil.png",
wield_image = "farming_hemp_oil.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_craft( {
output = "farming:hemp_oil",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"", "vessels:glass_bottle", ""}
}
})
minetest.register_craft( {
output = "farming:hemp_oil",
recipe = {
{"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"},
{"farming:seed_hemp", "farming:seed_hemp", "farming:seed_hemp"},
{"farming:seed_hemp", "vessels:glass_bottle", "farming:seed_hemp"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "farming:hemp_oil",
burntime = 20,
replacements = {{ "farming:hemp_oil", "vessels:glass_bottle"}}
})
-- hemp fibre
minetest.register_craftitem("farming:hemp_fibre", {
description = S("Hemp Fibre"),
inventory_image = "farming_hemp_fibre.png",
})
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "bucket:bucket_water", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}}
})
minetest.register_craft( {
output = "farming:hemp_fibre 8",
recipe = {
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"},
{"farming:hemp_leaf", "bucket:bucket_river_water", "farming:hemp_leaf"},
{"farming:hemp_leaf", "farming:hemp_leaf", "farming:hemp_leaf"}
},
replacements = {{ "bucket:bucket_river_water", "bucket:bucket_empty"}}
})
-- paper
minetest.register_craft( {
output = "default:paper",
recipe = {
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
}
})
-- string
minetest.register_craft( {
output = "farming:cotton",
recipe = {
{"farming:hemp_fibre"},
{"farming:hemp_fibre"},
{"farming:hemp_fibre"},
}
})
-- hemp rope
minetest.register_node("farming:hemp_rope", {
description = S("Hemp Rope"),
walkable = false,
climbable = true,
sunlight_propagates = true,
paramtype = "light",
tiles = {"farming_hemp_rope.png"},
wield_image = "farming_hemp_rope.png",
inventory_image = "farming_hemp_rope.png",
drawtype = "plantlike",
groups = {flammable = 2, choppy = 3, oddly_breakable_by_hand = 3},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
})
-- string
minetest.register_craft( {
output = "farming:hemp_rope 6",
recipe = {
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
{"farming:cotton", "farming:cotton", "farming:cotton"},
{"farming:hemp_fibre", "farming:hemp_fibre", "farming:hemp_fibre"},
}
})
-- hemp definition
local crop_def = {
drawtype = "plantlike",
tiles = {"farming_hemp_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
snappy = 3, flammable = 2, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
sounds = default.node_sound_leaves_defaults()
}
-- stage 1
minetest.register_node("farming:hemp_1", table.copy(crop_def))
-- stage 2
crop_def.tiles = {"farming_hemp_2.png"}
minetest.register_node("farming:hemp_2", table.copy(crop_def))
-- stage 3
crop_def.tiles = {"farming_hemp_3.png"}
minetest.register_node("farming:hemp_3", table.copy(crop_def))
-- stage 4
crop_def.tiles = {"farming_hemp_4.png"}
minetest.register_node("farming:hemp_4", table.copy(crop_def))
-- stage 5
crop_def.tiles = {"farming_hemp_5.png"}
minetest.register_node("farming:hemp_5", table.copy(crop_def))
-- stage 6
crop_def.tiles = {"farming_hemp_6.png"}
crop_def.drop = {
items = {
{items = {'farming:hemp_leaf'}, rarity = 2},
{items = {'farming:seed_hemp'}, rarity = 1},
}
}
minetest.register_node("farming:hemp_6", table.copy(crop_def))
-- stage 7
crop_def.tiles = {"farming_hemp_7.png"}
crop_def.drop = {
items = {
{items = {'farming:hemp_leaf'}, rarity = 1},
{items = {'farming:hemp_leaf'}, rarity = 3},
{items = {'farming:seed_hemp'}, rarity = 1},
{items = {'farming:seed_hemp'}, rarity = 3},
}
}
minetest.register_node("farming:hemp_7", table.copy(crop_def))
-- stage 8 (final)
crop_def.tiles = {"farming_hemp_8.png"}
crop_def.groups.growing = 0
crop_def.drop = {
items = {
{items = {'farming:hemp_leaf 2'}, rarity = 1},
{items = {'farming:hemp_leaf'}, rarity = 2},
{items = {'farming:seed_hemp'}, rarity = 1},
{items = {'farming:seed_hemp'}, rarity = 2},
}
}
minetest.register_node("farming:hemp_8", table.copy(crop_def))

View File

@ -1,5 +1,5 @@
--[[
Minetest Farming Redo Mod 1.23 (12th November 2016)
Farming Redo Mod 1.25 (6th May 2017)
by TenPlus1
NEW growing routine by prestidigitator
auto-refill by crabman77
@ -14,38 +14,6 @@ farming.select = {
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}
}
farming.DEBUG = false
-- farming.DEBUG = {} -- Uncomment to turn on profiling code/functions
local DEBUG_abm_runs = 0
local DEBUG_abm_time = 0
local DEBUG_timer_runs = 0
local DEBUG_timer_time = 0
if farming.DEBUG then
function farming.DEBUG.reset_times()
DEBUG_abm_runs = 0
DEBUG_abm_time = 0
DEBUG_timer_runs = 0
DEBUG_timer_time = 0
end
function farming.DEBUG.report_times()
local abm_n = DEBUG_abm_runs
local abm_dt = DEBUG_abm_time
local abm_avg = (abm_n > 0 and abm_dt / abm_n) or 0
local timer_n = DEBUG_timer_runs
local timer_dt = DEBUG_timer_time
local timer_avg = (timer_n > 0 and timer_dt / timer_n) or 0
local dt = abm_dt + timer_dt
print("ABM ran for "..abm_dt.."µs over "..abm_n.." runs: "..abm_avg.."µs/run")
print("Timer ran for "..timer_dt.."µs over "..timer_n.." runs: "..timer_avg.."µs/run")
print("Total farming time: "..dt.."µs")
end
end
local statistics = dofile(farming.path.."/statistics.lua")
@ -353,23 +321,6 @@ end)
local abm_func = farming.handle_growth
if farming.DEBUG then
local normal_abm_func = abm_func
abm_func = function(...)
local t0 = minetest.get_us_time()
local r = { normal_abm_func(...) }
local t1 = minetest.get_us_time()
DEBUG_abm_runs = DEBUG_abm_runs + 1
DEBUG_abm_time = DEBUG_abm_time + (t1 - t0)
return unpack(r)
end
end
-- Just in case a growing type or added node is missed (also catches existing
-- nodes added to map before timers were incorporated).
@ -399,8 +350,7 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
if stages.plant_name == "farming:cocoa" then
if not minetest.find_node_near(pos, 1,
{"default:jungletree", "moretrees:jungletree_leaves_green"}) then
if not minetest.find_node_near(pos, 1, {"default:jungletree"}) then
return true
end
@ -465,23 +415,6 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
return growth ~= max_growth
end
if farming.DEBUG then
local timer_func = farming.plant_growth_timer;
farming.plant_growth_timer = function(pos, elapsed, node_name)
local t0 = minetest.get_us_time()
local r = { timer_func(pos, elapsed, node_name) }
local t1 = minetest.get_us_time()
DEBUG_timer_runs = DEBUG_timer_runs + 1
DEBUG_timer_time = DEBUG_timer_time + (t1 - t0)
return unpack(r)
end
end
-- refill placed plant by crabman (26/08/2015)
local can_refill_plant = {
["farming:blueberry_1"] = "farming:blueberries",
@ -502,6 +435,7 @@ local can_refill_plant = {
["farming:rhubarb_1"] = "farming:rhubarb",
["farming:cocoa_1"] = "farming:cocoa_beans",
["farming:barley_1"] = "farming:seed_barley",
["farming:hemp_1"] = "farming:seed_hemp",
}
function farming.refill_plant(player, plantname, index)
@ -595,7 +529,7 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
end
end
-- Function to register plants (for compatibility)
-- Function to register plants (default farming compatibility)
farming.register_plant = function(name, def)
@ -680,7 +614,7 @@ farming.register_plant = function(name, def)
sounds = default.node_sound_leaves_defaults(),
})
-- register_plant_node(node_name)
register_plant_node(node_name)
end
-- Return info
@ -688,30 +622,71 @@ farming.register_plant = function(name, def)
return r
end
-- load crops
-- default settings
farming.carrot = true
farming.potato = true
farming.tomato = true
farming.cucumber = true
farming.corn = true
farming.coffee = true
farming.coffee = true
farming.melon = true
farming.sugar = true
farming.pumpkin = true
farming.cocoa = true
farming.raspberry = true
farming.blueberry = true
farming.rhubarb = true
farming.beans = true
farming.grapes = true
farming.barley = true
farming.hemp = true
farming.donuts = true
-- Load new global settings if found inside mod folder
local input = io.open(farming.path.."/farming.conf", "r")
if input then
dofile(farming.path .. "/farming.conf")
input:close()
input = nil
end
-- load new world-specific settings if found inside world folder
local worldpath = minetest.get_worldpath()
local input = io.open(worldpath.."/farming.conf", "r")
if input then
dofile(worldpath .. "/farming.conf")
input:close()
input = nil
end
-- load crops
dofile(farming.path.."/soil.lua")
dofile(farming.path.."/hoes.lua")
dofile(farming.path.."/grass.lua")
dofile(farming.path.."/wheat.lua")
dofile(farming.path.."/cotton.lua")
dofile(farming.path.."/carrot.lua")
dofile(farming.path.."/potato.lua")
dofile(farming.path.."/tomato.lua")
dofile(farming.path.."/cucumber.lua")
dofile(farming.path.."/corn.lua")
dofile(farming.path.."/coffee.lua")
dofile(farming.path.."/melon.lua")
dofile(farming.path.."/sugar.lua")
dofile(farming.path.."/pumpkin.lua")
dofile(farming.path.."/cocoa.lua")
dofile(farming.path.."/raspberry.lua")
dofile(farming.path.."/blueberry.lua")
dofile(farming.path.."/rhubarb.lua")
dofile(farming.path.."/beanpole.lua")
dofile(farming.path.."/grapes.lua")
dofile(farming.path.."/barley.lua")
dofile(farming.path.."/donut.lua")
if farming.carrot then dofile(farming.path.."/carrot.lua") end
if farming.potato then dofile(farming.path.."/potato.lua") end
if farming.tomato then dofile(farming.path.."/tomato.lua") end
if farming.cucumber then dofile(farming.path.."/cucumber.lua") end
if farming.corn then dofile(farming.path.."/corn.lua") end
if farming.coffee then dofile(farming.path.."/coffee.lua") end
if farming.melon then dofile(farming.path.."/melon.lua") end
if farming.sugar then dofile(farming.path.."/sugar.lua") end
if farming.pumpkin then dofile(farming.path.."/pumpkin.lua") end
if farming.cocoa then dofile(farming.path.."/cocoa.lua") end
if farming.raspberry then dofile(farming.path.."/raspberry.lua") end
if farming.blueberry then dofile(farming.path.."/blueberry.lua") end
if farming.rhubarb then dofile(farming.path.."/rhubarb.lua") end
if farming.beans then dofile(farming.path.."/beanpole.lua") end
if farming.grapes then dofile(farming.path.."/grapes.lua") end
if farming.barley then dofile(farming.path.."/barley.lua") end
if farming.hemp then dofile(farming.path.."/hemp.lua") end
if farming.donuts then dofile(farming.path.."/donut.lua") end
dofile(farming.path.."/mapgen.lua")
dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility
dofile(farming.path.."/lucky_block.lua")

View File

@ -74,7 +74,7 @@ Baked Potato = Ofenkartoffel
#pumpkin.lua
Pumpkin = Kürbis
Pumpkin Slice = Kürbisscheibe
Jack 'O Lantern = Kürbislaterne
Jack 'O Lantern (punch to turn on and off) = Kürbislaterne (Punch zum Ein- und Ausschalten)
Pumpkin Bread = Kürbisbrot
Pumpkin Dough = Kürbisteig

View File

@ -72,7 +72,7 @@ Baked Potato =
#pumpkin.lua
Pumpkin =
Pumpkin Slice =
Jack 'O Lantern =
Jack 'O Lantern (punch to turn on and off) =
Pumpkin Bread =
Pumpkin Dough =

View File

@ -14,5 +14,6 @@ if minetest.get_modpath("lucky_block") then
{"dro", {"farming:bottle_ethanol"}, 1},
{"nod", "farming:melon", 0},
{"dro", {"farming:donut", "farming:donut_chocolate", "farming:donut_apple"}, 5},
{"dro", {"farming:hemp_leaf", "farming:hemp_fibre", "farming:seed_hemp"}, 5},
})
end

View File

@ -1,5 +1,11 @@
-- decoration function
local function register_plant(name, min, max, spawnby, num)
local function register_plant(name, min, max, spawnby, num, enabled)
if enabled ~= true then
return
end
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass"},
@ -20,46 +26,50 @@ local function register_plant(name, min, max, spawnby, num)
})
end
function farming.register_mgv6_decorations()
register_plant("potato_3", 15, 40, "", -1)
register_plant("tomato_7", 5, 20, "", -1)
register_plant("carrot_8", 1, 30, "group:water", 1)
register_plant("cucumber_4", 1, 20, "group:water", 1)
register_plant("corn_7", 12, 22, "", -1)
register_plant("corn_8", 10, 20, "", -1)
register_plant("coffee_5", 20, 45, "", -1)
register_plant("melon_8", 1, 20, "group:water", 1)
register_plant("pumpkin_8", 1, 20, "group:water", 1)
register_plant("raspberry_4", 3, 10, "", -1)
register_plant("rhubarb_3", 3, 15, "", -1)
register_plant("blueberry_4", 3, 10, "", -1)
register_plant("beanbush", 18, 35, "", -1)
register_plant("grapebush", 25, 45, "", -1)
end
-- v7 maps have a beach so plants growing near water is limited to 6 high
function farming.register_mgv7_decorations()
register_plant("potato_3", 15, 40, "", -1)
register_plant("tomato_7", 5, 20, "", -1)
register_plant("carrot_8", 1, 6, "", -1)
register_plant("cucumber_4", 1, 6, "", -1)
register_plant("corn_7", 12, 22, "", -1)
register_plant("corn_8", 10, 20, "", -1)
register_plant("coffee_5", 20, 45, "", -1)
register_plant("melon_8", 1, 6, "", -1)
register_plant("pumpkin_8", 1, 6, "", -1)
register_plant("raspberry_4", 3, 10, "", -1)
register_plant("rhubarb_3", 3, 15, "", -1)
register_plant("blueberry_4", 3, 10, "", -1)
register_plant("beanbush", 18, 35, "", -1)
register_plant("grapebush", 25, 45, "", -1)
end
-- add crops to mapgen
register_plant("potato_3", 15, 40, "", -1, farming.potato)
register_plant("tomato_7", 5, 20, "", -1, farming.tomato)
register_plant("corn_7", 12, 22, "", -1, farming.corn)
register_plant("coffee_5", 20, 45, "", -1, farming.coffee)
register_plant("raspberry_4", 3, 10, "", -1, farming.raspberry)
register_plant("rhubarb_3", 3, 15, "", -1, farming.rhubarb)
register_plant("blueberry_4", 3, 10, "", -1, farming.blueberry)
register_plant("beanbush", 18, 35, "", -1, farming.beans)
register_plant("grapebush", 25, 45, "", -1, farming.grapes)
-- detect mapgen
local mg_name = minetest.get_mapgen_params().mgname
if mg_name == "v6" then
farming.register_mgv6_decorations()
if minetest.get_mapgen_params().mgname == "v6" then
register_plant("carrot_8", 1, 30, "group:water", 1, farming.carrot)
register_plant("cucumber_4", 1, 20, "group:water", 1, farming.cucumber)
register_plant("melon_8", 1, 20, "group:water", 1, farming.melon)
register_plant("pumpkin_8", 1, 20, "group:water", 1, farming.pumpkin)
else
farming.register_mgv7_decorations()
-- v7 maps have a beach so plants growing near water is limited to 6 high
register_plant("carrot_8", 1, 6, "", -1, farming.carrot)
register_plant("cucumber_4", 1, 6, "", -1, farming.cucumber)
register_plant("melon_8", 1, 6, "", -1, farming.melon)
register_plant("pumpkin_8", 1, 6, "", -1, farming.pumpkin)
end
if farming.hemp then
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.06,
spread = {x = 100, y = 100, z = 100},
seed = 420,
octaves = 3,
persist = 0.6
},
y_min = 5,
y_max = 35,
decoration = "farming:hemp_7",
spawn_by = "group:tree",
num_spawn_by = 1,
})
end

View File

@ -53,7 +53,7 @@ minetest.register_craft({
-- jack 'o lantern
minetest.register_node("farming:jackolantern", {
description = S("Jack 'O Lantern"),
description = S("Jack 'O Lantern (punch to turn on and off)"),
tiles = {
"farming_pumpkin_top.png",
"farming_pumpkin_top.png",

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@ -25,7 +25,7 @@ local nodenames = {}
local function create_nodes()
local images = { "ferns_fern.png", "ferns_fern_mid.png", "ferns_fern_big.png" }
local vscales = { 1, 2, 2.2 }
local vscales = { 1, math.sqrt(8), math.sqrt(11) }
local descs = { "Lady-fern (Athyrium)", nil, nil }
for i = 1, 3 do

View File

@ -104,7 +104,7 @@ end
minetest.register_node("ferns:tree_fern_leaves_giant", {
description = "Tree Fern Crown (Dicksonia)",
drawtype = "plantlike",
visual_scale = math.sqrt(8),
visual_scale = math.sqrt(11),
wield_scale = {x=0.175, y=0.175, z=0.175},
paramtype = "light",
tiles = {"ferns_fern_tree_giant.png"},

View File

@ -55,7 +55,7 @@ end
minetest.register_node("ferns:tree_fern_leaves", {
description = "Tree Fern Crown (Dicksonia)",
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
paramtype2 = "facedir",
--tiles = {"[combine:32x32:0,0=top_left.png:0,16=bottom_left.png:16,0=top_right.png:16,16=bottom_right.png"},
@ -89,7 +89,7 @@ minetest.register_node("ferns:tree_fern_leaves", {
})
minetest.register_node("ferns:tree_fern_leaves_02", {
drawtype = "plantlike",
visual_scale = 2,
visual_scale = math.sqrt(8),
paramtype = "light",
tiles = {"ferns_fern_big.png"},
walkable = false,

View File

@ -1,4 +1,9 @@
local S = biome_lib.intllib
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
-- This file supplies a few additional plants and some related crafts
-- for the plantlife modpack. Last revision: 2013-04-24

View File

@ -0,0 +1,13 @@
# Traducido por Carlos Barraza
Waterlily = Lirio de agua
Seaweed = Algas marinas
Potted Rose = Rosa en maceta
Potted Tulip = Tulipán en maceta
Potted Yellow Dandelion = Diente de león amarillo en maceta
Potted White Dandelion = Diente de león blanco en maceta
Potted Blue Geranium = Geranio azul en maceta
Potted Viola = Viola en maceta
Flower Pot = Florero
[Flowers] Loaded. = [Flores] Cargado.

View File

@ -4,11 +4,11 @@ local S = homedecor_i18n.gettext
minetest.register_node("homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xff606060 },
"homedecor_bathroom_tiles_fg.png"
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 },
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
@ -23,11 +23,11 @@ minetest.register_node("homedecor:bathroom_tiles_dark", {
minetest.register_node("homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffc0c0c0 },
"homedecor_bathroom_tiles_fg.png"
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 },
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
@ -42,11 +42,11 @@ minetest.register_node("homedecor:bathroom_tiles_medium", {
minetest.register_node("homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffffffff },
"homedecor_bathroom_tiles_fg.png"
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff },
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",

View File

@ -67,11 +67,12 @@ homedecor.register("bed_regular", {
homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
return itemstack
else
-- if minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
end
return itemstack
end
return itemstack
end
})
@ -98,13 +99,13 @@ homedecor.register("bed_extended", {
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos)
end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-- local itemname = itemstack:get_name()
-- if minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
-- return itemstack
-- end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local itemname = itemstack:get_name()
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
end
return itemstack
end,
drop = "homedecor:bed_regular"
})
@ -139,13 +140,13 @@ homedecor.register("bed_kingsize", {
inv:add_item("main", "homedecor:bed_regular 2")
end
end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-- local itemname = itemstack:get_name()
-- if minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
-- return itemstack
-- end
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local itemname = itemstack:get_name()
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
end
return itemstack
end
})
for _, w in pairs({ N_("mahogany"), N_("oak") }) do

View File

@ -1,155 +1,159 @@
local S = homedecor_i18n.gettext
local function N_(x) return x end
local bookcolors = {
{ N_("red"), 0xffd26466 },
{ N_("green"), 0xff62aa66 },
{ N_("blue"), 0xff8686d7 },
{ N_("violet"), 0xff9c65a7 },
{ N_("grey"), 0xff757579 },
{ N_("brown"), 0xff896958 }
}
local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { }
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
_recover = meta:get_string("_recover") or "",
})
local stack = ItemStack({
name = "homedecor:book",
metadata = data,
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
end
minetest.remove_node(pos)
end
for _, c in ipairs(bookcolors) do
local color, hue = unpack(c)
local inv_img = "homedecor_book_inv.png^homedecor_book_trim_inv.png"
homedecor.register("book", {
description = S("Writable Book"),
mesh = "homedecor_book.obj",
tiles = {
"homedecor_book_cover.png",
{ name = "homedecor_book_edges.png", color = 0xffffffff },
{ name = "homedecor_book_cover_trim.png", color = 0xffffffff }
},
inventory_image = inv_img,
wield_image = inv_img,
groups = { snappy=3, oddly_breakable_by_hand=3, book=1, ud_param2_colorable = 1 },
walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_dig_node = unifieddyes.after_dig_node,
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open", param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
name = "homedecor:book",
param2 = fdir,
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
_recover = meta:get_string("_recover") or "",
})
local text = itemstack:get_metadata() or ""
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
if type(data) ~= "table" then
data = {}
-- Store raw metadata in case some data is lost by the
-- transition to the new meta format, so it is not lost
-- and can be recovered if needed.
meta:set_string("_recover", text)
local stack = ItemStack({
name = "homedecor:book_"..color,
metadata = data,
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
end
meta:set_string("title", data.title or "")
meta:set_string("text", data.text or "")
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
end
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
return itemstack
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
minetest.remove_node(pos)
end
homedecor.register("book_open", {
mesh = "homedecor_book_open.obj",
tiles = {
"homedecor_book_cover.png",
{ name = "homedecor_book_edges.png", color = 0xffffffff },
{ name = "homedecor_book_pages.png", color = 0xffffffff }
},
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1 },
drop = "homedecor:book",
walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_place_node = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
local owner = meta:get_string("owner") or ""
local formspec
if owner == "" or owner == player_name then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..default.gui_bg..
"button_exit[7,0.25;1,0.5;close;X]"..
default.gui_bg_img..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book", param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
homedecor.register("book_"..color, {
description = S("Writable Book (@1)", S(color)),
mesh = "homedecor_book.obj",
tiles = {
{ name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_edges.png", color = "white" }
},
overlay_tiles = {
{ name = "homedecor_book_cover_trim.png", color = "white" },
""
},
groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
walkable = false,
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
name = "homedecor:book_"..color,
param2 = fdir,
})
end,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
}
})
local text = itemstack:get_metadata() or ""
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
if type(data) ~= "table" then
data = {}
-- Store raw metadata in case some data is lost by the
-- transition to the new meta format, so it is not lost
-- and can be recovered if needed.
meta:set_string("_recover", text)
end
meta:set_string("title", data.title or "")
meta:set_string("text", data.text or "")
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
end
return itemstack
end,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
homedecor.register("book_open_"..color, {
mesh = "homedecor_book_open.obj",
tiles = {
{ name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_edges.png", color = "white" },
{ name = "homedecor_book_pages.png", color = "white" }
},
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
drop = "homedecor:book_"..color,
walkable = false,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
local owner = meta:get_string("owner") or ""
local formspec
if owner == "" or owner == player_name then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..default.gui_bg..
"button_exit[7,0.25;1,0.5;close;X]"..
default.gui_bg_img..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
})
end,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
}
})
end
minetest.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= BOOK_FORMNAME or not fields.save then
@ -169,67 +173,5 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
end)
-- convert old static nodes to param2
local bookcolors = {
"red",
"green",
"blue",
"violet",
"grey",
"brown"
}
homedecor.old_static_books = {}
for _, color in ipairs(bookcolors) do
table.insert(homedecor.old_static_books, "homedecor:book_"..color)
table.insert(homedecor.old_static_books, "homedecor:book_open_"..color)
end
minetest.register_lbm({
name = "homedecor:convert_books",
label = "Convert homedecor books to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_books,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_", -7)+1)
local newname = "homedecor:book"
if string.find(name, "open") then
newname = "homedecor:book_open"
end
local old_fdir = math.floor(node.param2 % 32)
local new_fdir = 3
if old_fdir == 0 then
new_fdir = 3
elseif old_fdir == 1 then
new_fdir = 4
elseif old_fdir == 2 then
new_fdir = 2
elseif old_fdir == 3 then
new_fdir = 5
end
if color == "grey" then
color = "dark_grey"
elseif color == "violet" then
color = "dark_magenta"
elseif color == "brown" then
color = "dark_orange"
elseif color == "blue" then
color = "light_blue"
else
color = "medium_"..color
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local param2 = paletteidx + new_fdir
minetest.swap_node(pos, { name = newname, param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})
minetest.register_alias("homedecor:book", "homedecor:book_grey")
minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey")

View File

@ -15,7 +15,7 @@ homedecor = {
modpath = modpath,
-- infinite stacks
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
expect_infinite_stacks = minetest.settings:get_bool("creative_mode") and not minetest.get_modpath("unified_inventory")
}
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling)

View File

@ -21,6 +21,15 @@ minetest.register_node("homedecor:glowlight_half", {
"homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png"
},
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "colorwallmounted",
@ -52,6 +61,15 @@ minetest.register_node("homedecor:glowlight_quarter", {
"homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png"
},
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "colorwallmounted",
@ -83,6 +101,15 @@ minetest.register_node("homedecor:glowlight_small_cube", {
"homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png"
},
overlay_tiles = {
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
paramtype = "light",
paramtype2 = "colorwallmounted",
drawtype = "nodebox",
@ -106,9 +133,10 @@ minetest.register_node("homedecor:glowlight_small_cube", {
homedecor.register("plasma_lamp", {
description = S("Plasma Lamp"),
drawtype = "glasslike_framed",
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"},
special_tiles = {
drawtype = "mesh",
mesh = "plasma_lamp.obj",
tiles = {
"default_gold_block.png",
{
name="homedecor_plasma_storm.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -119,16 +147,13 @@ homedecor.register("plasma_lamp", {
sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.swap_node(pos, {name = "homedecor:plasma_lamp", param2 = 255})
end
})
homedecor.register("plasma_ball", {
description = S("Plasma Ball"),
mesh = "homedecor_plasma_ball.obj",
tiles = {
"homedecor_generic_plastic.png",
{ name = "homedecor_generic_plastic.png", color = homedecor.color_black },
{
name = "homedecor_plasma_ball_streamers.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},

View File

@ -1,243 +1,206 @@
# Blender v2.72 (sub 0) OBJ File: 'book.blend'
# Blender v2.78 (sub 0) OBJ File: 'book.blend'
# www.blender.org
o Cube.002_Cube.001
v -0.216625 -0.161995 -0.448008
v -0.216625 -0.149566 -0.485966
v -0.216625 -0.113157 -0.485966
v -0.216625 -0.142021 -0.448008
v -0.208120 -0.115781 -0.485966
v -0.208120 -0.142021 -0.448008
v 0.220555 -0.113157 -0.485966
v 0.220555 0.159347 -0.485966
v 0.212050 -0.115781 -0.485966
v -0.208120 -0.161995 -0.448008
v -0.208120 0.148926 -0.485966
v -0.208120 0.155653 -0.448008
v 0.212051 0.155653 -0.448008
v 0.212051 0.148926 -0.485966
v -0.208120 -0.152482 -0.485966
v 0.212050 -0.152482 -0.485966
v 0.220555 -0.161995 -0.448008
v 0.212050 -0.161995 -0.448008
v 0.212050 -0.145193 -0.500002
v -0.208120 -0.145193 -0.500002
v -0.208120 -0.115781 -0.500002
v 0.212050 -0.115781 -0.500002
v 0.212050 -0.115781 -0.396013
v -0.208120 -0.115781 -0.396013
v -0.208120 -0.145193 -0.396013
v 0.212050 -0.145193 -0.396013
v 0.212050 -0.152482 -0.410049
v -0.208120 -0.152482 -0.410049
v 0.212051 0.148926 -0.410049
v -0.208120 0.148926 -0.410049
v 0.212050 -0.115781 -0.410049
v 0.220555 0.159347 -0.410049
v 0.220555 -0.113157 -0.410049
v -0.208120 -0.115781 -0.410049
v -0.216625 -0.113157 -0.410049
v -0.216625 -0.149566 -0.410049
v -0.216625 -0.115781 -0.396013
v -0.216625 -0.141549 -0.396013
v 0.220555 -0.149566 -0.410049
v 0.220555 -0.141549 -0.396013
v 0.220555 0.159346 -0.396013
v -0.216624 0.159347 -0.396013
v 0.220555 -0.115781 -0.396013
v -0.216624 0.159347 -0.410049
v -0.216625 -0.115781 -0.500002
v -0.216625 -0.141549 -0.500002
v 0.212050 -0.142021 -0.448008
v 0.220555 -0.149566 -0.485966
v 0.220555 -0.141549 -0.500002
v 0.220555 0.159346 -0.500002
v -0.216624 0.159347 -0.500002
v 0.220555 -0.142021 -0.448008
v 0.220555 -0.115781 -0.500002
v -0.216624 0.159347 -0.485966
v -0.216625 -0.162729 -0.448008
v -0.216625 -0.150269 -0.486432
v -0.208120 -0.162729 -0.448008
v -0.208120 -0.153192 -0.486432
v 0.212050 -0.153192 -0.486432
v 0.220555 -0.162729 -0.448008
v 0.212050 -0.162729 -0.448008
v 0.212050 -0.145885 -0.500640
v -0.208120 -0.145885 -0.500640
v -0.208120 -0.116399 -0.500640
v 0.212050 -0.116399 -0.500640
v 0.212050 -0.116399 -0.395375
v -0.208120 -0.116399 -0.395375
v -0.208120 -0.145885 -0.395375
v 0.212050 -0.145885 -0.395375
v 0.212050 -0.153192 -0.409583
v -0.208120 -0.153192 -0.409583
v -0.216625 -0.150269 -0.409583
v -0.216625 -0.116399 -0.395375
v -0.216625 -0.142232 -0.395375
v 0.220555 -0.150269 -0.409583
v 0.220555 -0.142232 -0.395375
v 0.220555 0.159416 -0.395375
v -0.216624 0.159417 -0.395375
v 0.220555 -0.116399 -0.395375
v -0.216625 -0.116399 -0.500640
v -0.216625 -0.142232 -0.500640
v 0.220555 -0.150269 -0.486432
v 0.220555 -0.142232 -0.500640
v 0.220555 0.159416 -0.500640
v -0.216624 0.159417 -0.500640
v 0.220555 -0.116399 -0.500640
vt 0.921987 0.383861
vt 0.921987 0.340448
vt 0.931829 0.340448
vt 0.931829 0.383861
vt 0.931829 0.427274
vt 0.921987 0.427274
vt 0.768089 0.490273
vt 0.722954 0.490273
vt 0.722954 0.009727
vt 0.768089 0.009727
vt 0.768089 0.500000
vt 0.722404 0.500000
vt 0.809636 0.490273
vt 0.809086 0.500000
vt 0.352434 0.000000
vt 0.670829 0.000000
vt 0.670829 0.009727
vt 0.670829 0.490273
vt 0.670829 0.500000
vt 0.352433 0.499999
vt 0.809636 0.009727
vt 0.809086 0.000000
vt 0.823601 0.000000
vt 0.824288 0.009727
vt 0.012060 0.509727
vt 0.000000 0.500001
vt 0.315359 0.500000
vt 0.318396 0.509727
vt 0.700649 0.000000
vt 0.704866 0.009727
vt 0.731001 0.867517
vt 0.731001 0.844673
vt 0.774928 0.811661
vt 0.774928 0.853302
vt 0.687072 0.853302
vt 0.687072 0.811661
vt 0.774928 0.500000
vt 0.791171 0.500000
vt 0.791171 0.814662
vt 0.791171 0.844133
vt 0.851343 0.522844
vt 0.851343 0.500000
vt 0.895271 0.514215
vt 0.895271 0.555856
vt 0.912144 0.383862
vt 0.912144 0.340448
vt 0.334639 0.500000
vt 0.334639 0.999999
vt 0.318396 0.999999
vt 0.318396 0.500000
vt 0.895271 0.867517
vt 0.911514 0.523384
vt 0.911514 0.552855
vt 0.911514 0.867516
vt 0.824288 0.490273
vt 0.823601 0.500000
vt 0.807415 0.555856
vt 0.807415 0.514215
vt 0.768089 0.000000
vt 0.722404 0.000000
vt 0.912144 0.427274
vt 0.318396 0.990273
vt 0.315359 1.000000
vt 0.000000 1.000000
vt 0.012060 0.990274
vt 0.704866 0.490273
vt 0.318396 0.490273
vt 0.318396 0.009727
vt 0.352433 0.009727
vt 0.352433 0.490273
vt 0.705553 0.490273
vt 0.705553 0.009727
vt 0.670829 0.509727
vt 0.364493 0.509726
vt 0.667792 0.500000
vt 0.318396 0.000000
vt 0.348216 0.000000
vt 0.704866 0.500000
vt 0.807415 0.867517
vt 0.791172 0.867516
vt 0.791171 0.552855
vt 0.791171 0.523384
vt 0.336190 0.500000
vt 0.352433 0.999999
vt 0.336190 0.999999
vt 0.670829 0.844133
vt 0.670829 0.814662
vt 0.687072 0.500000
vt 0.348216 0.500000
vt 0.364493 0.990273
vt 0.670829 0.990273
vt 0.667792 1.000000
vt 0.704866 0.000000
vt 0.000000 0.000001
vt 0.668539 0.639838
vt 0.640677 0.639838
vt 0.640677 0.630641
vt 0.672479 0.630641
vt 0.439305 1.000000
vt 0.439305 0.319104
vt 0.527160 0.379125
vt 0.527160 0.984613
vt 0.087857 1.000000
vt 0.087857 0.319104
vt 0.175712 0.334491
vt 0.175712 0.939979
vt 0.351448 0.984613
vt 0.351448 0.379125
vt 0.000000 0.939979
vt 0.000000 0.334491
vt 0.351448 0.000000
vt 0.351448 0.961094
vt 0.263593 0.961094
vt 0.263593 0.000000
vt 0.175736 0.000000
vt 0.175736 0.961094
vn -0.123900 0.803100 -0.582900
vn -0.123900 0.803000 0.582900
vn 0.000000 -0.970000 0.243100
vn 0.162500 -0.947900 0.274000
vn 0.162500 -0.947900 -0.274000
vn 0.000000 0.000000 -1.000000
vn -0.320700 -0.831600 -0.453400
vn 0.000000 -0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.123900 0.803100 -0.582900
vn 0.000000 1.000000 -0.000000
vn 0.320700 -0.831600 -0.453400
vn -0.162500 -0.947900 -0.274000
vn 0.000000 -0.970000 -0.243100
vn -0.162500 -0.947900 0.274000
vn 0.123900 0.803000 0.582900
vn 0.000000 -0.887500 -0.460900
vn 0.000000 -0.887500 0.460900
vn 0.320700 -0.831600 0.453400
vn -0.320700 -0.831600 0.453400
vn 0.000000 0.984700 -0.174500
vn -0.000000 0.984700 0.174500
vn 0.000000 -0.970600 0.240900
vn 0.163000 -0.948500 0.271500
vn 0.163000 -0.948500 -0.271500
vn -0.322100 -0.833000 -0.449800
vn 0.322100 -0.833000 -0.449800
vn -0.163000 -0.948500 -0.271500
vn 0.000000 -0.970600 -0.240900
vn -0.163000 -0.948500 0.271500
vn 0.000000 -0.889300 -0.457400
vn 0.000000 -0.889300 0.457400
vn 0.322100 -0.833000 0.449800
vn -0.322100 -0.833000 0.449800
v 0.161995 -0.448008 0.216625
v 0.149566 -0.485966 0.216625
v 0.113157 -0.485966 0.216625
v 0.142021 -0.448008 0.216625
v 0.115781 -0.485966 0.208120
v 0.142021 -0.448008 0.208120
v 0.113157 -0.485966 -0.220555
v -0.159347 -0.485966 -0.220555
v 0.115781 -0.485966 -0.212050
v 0.161995 -0.448008 0.208120
v -0.148926 -0.485966 0.208120
v -0.155653 -0.448008 0.208120
v -0.155653 -0.448008 -0.212051
v -0.148926 -0.485966 -0.212051
v 0.152482 -0.485966 0.208120
v 0.152482 -0.485966 -0.212050
v 0.161995 -0.448008 -0.220555
v 0.161995 -0.448008 -0.212050
v 0.145193 -0.500002 -0.212050
v 0.145193 -0.500002 0.208120
v 0.115781 -0.500002 0.208120
v 0.115781 -0.500002 -0.212050
v 0.115781 -0.396013 -0.212050
v 0.115781 -0.396013 0.208120
v 0.145193 -0.396013 0.208120
v 0.145193 -0.396013 -0.212050
v 0.152482 -0.410049 -0.212050
v 0.152482 -0.410049 0.208120
v -0.148926 -0.410049 -0.212051
v -0.148926 -0.410049 0.208120
v 0.115781 -0.410049 -0.212050
v -0.159347 -0.410049 -0.220555
v 0.113157 -0.410049 -0.220555
v 0.115781 -0.410049 0.208120
v 0.113157 -0.410049 0.216625
v 0.149566 -0.410049 0.216625
v 0.115781 -0.396013 0.216625
v 0.141549 -0.396013 0.216625
v 0.149566 -0.410049 -0.220555
v 0.141549 -0.396013 -0.220555
v -0.159346 -0.396013 -0.220555
v -0.159347 -0.396013 0.216624
v 0.115781 -0.396013 -0.220555
v -0.159347 -0.410049 0.216624
v 0.115781 -0.500002 0.216625
v 0.141549 -0.500002 0.216625
v 0.142021 -0.448008 -0.212050
v 0.149566 -0.485966 -0.220555
v 0.141549 -0.500002 -0.220555
v -0.159346 -0.500002 -0.220555
v -0.159347 -0.500002 0.216624
v 0.142021 -0.448008 -0.220555
v 0.115781 -0.500002 -0.220555
v -0.159347 -0.485966 0.216624
vt 0.9220 0.3839
vt 0.9220 0.3404
vt 0.9318 0.3404
vt 0.9318 0.3839
vt 0.9318 0.4273
vt 0.9220 0.4273
vt 0.7681 0.4903
vt 0.7230 0.4903
vt 0.7230 0.0097
vt 0.7681 0.0097
vt 0.7681 0.5000
vt 0.7224 0.5000
vt 0.8096 0.4903
vt 0.8091 0.5000
vt 0.3524 0.0000
vt 0.6708 0.0000
vt 0.6708 0.0097
vt 0.6708 0.4903
vt 0.6708 0.5000
vt 0.3524 0.5000
vt 0.8096 0.0097
vt 0.8091 0.0000
vt 0.8236 0.0000
vt 0.8243 0.0097
vt 0.0121 0.5097
vt 0.0000 0.5000
vt 0.3154 0.5000
vt 0.3184 0.5097
vt 0.7006 0.0000
vt 0.7049 0.0097
vt 0.7310 0.8675
vt 0.7310 0.8447
vt 0.7749 0.8117
vt 0.7749 0.8533
vt 0.6871 0.8533
vt 0.6871 0.8117
vt 0.7749 0.5000
vt 0.7912 0.5000
vt 0.7912 0.8147
vt 0.7912 0.8441
vt 0.8513 0.5228
vt 0.8513 0.5000
vt 0.8953 0.5142
vt 0.8953 0.5559
vt 0.9220 0.3404
vt 0.9220 0.3839
vt 0.9121 0.3839
vt 0.9121 0.3404
vt 0.3346 0.5000
vt 0.3346 1.0000
vt 0.3184 1.0000
vt 0.3184 0.5000
vt 0.8953 0.8675
vt 0.9115 0.5234
vt 0.9115 0.5529
vt 0.9115 0.8675
vt 0.8243 0.4903
vt 0.8236 0.5000
vt 0.8074 0.5559
vt 0.8074 0.5142
vt 0.7681 0.0000
vt 0.7224 0.0000
vt 0.9220 0.4273
vt 0.9121 0.4273
vt 0.3184 0.9903
vt 0.3154 1.0000
vt 0.0000 1.0000
vt 0.0121 0.9903
vt 0.7049 0.4903
vt 0.3184 0.4903
vt 0.3184 0.0097
vt 0.3524 0.0097
vt 0.3524 0.4903
vt 0.7056 0.4903
vt 0.7056 0.0097
vt 0.6708 0.5097
vt 0.3645 0.5097
vt 0.3524 0.5000
vt 0.6678 0.5000
vt 0.3184 0.0000
vt 0.3482 0.0000
vt 0.7049 0.5000
vt 0.8074 0.8675
vt 0.7912 0.8675
vt 0.7912 0.5529
vt 0.7912 0.5234
vt 0.3362 0.5000
vt 0.3524 1.0000
vt 0.3362 1.0000
vt 0.6708 0.8441
vt 0.6708 0.8147
vt 0.6708 0.5000
vt 0.6871 0.5000
vt 0.3482 0.5000
vt 0.3184 0.5000
vt 0.3645 0.9903
vt 0.6708 0.9903
vt 0.6678 1.0000
vt 0.7049 0.0000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 0.6685 0.6398
vt 0.6407 0.6398
vt 0.6407 0.6306
vt 0.6725 0.6306
vt 0.4393 1.0000
vt 0.4393 0.3191
vt 0.5272 0.3791
vt 0.5272 0.9846
vt 0.0879 1.0000
vt 0.0879 0.3191
vt 0.1757 0.3345
vt 0.1757 0.9400
vt 0.3514 0.9846
vt 0.3514 0.3791
vt 0.0000 0.9400
vt 0.0000 0.3345
vt 0.3514 0.0000
vt 0.3514 0.9611
vt 0.2636 0.9611
vt 0.2636 0.0000
vt 0.1757 0.0000
vt 0.1757 0.9611
vn -0.8031 -0.5829 0.1239
vn -0.8030 0.5829 0.1239
vn 0.9700 0.2431 -0.0000
vn 0.9479 0.2740 -0.1625
vn 0.9479 -0.2740 -0.1625
vn -0.0000 -1.0000 -0.0000
vn 0.8316 -0.4534 0.3207
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn -0.8031 -0.5829 -0.1239
vn -1.0000 -0.0000 -0.0000
vn 0.8316 -0.4534 -0.3207
vn 0.9479 -0.2740 0.1625
vn 0.9700 -0.2431 -0.0000
vn 0.9479 0.2740 0.1625
vn -0.8030 0.5829 -0.1239
vn 0.8875 -0.4609 -0.0000
vn 0.8875 0.4609 -0.0000
vn 0.8316 0.4534 -0.3207
vn 0.8316 0.4534 0.3207
vn -0.9847 -0.1745 0.0000
vn -0.9847 0.1745 0.0000
g Cube.002_Cube.001_Cube.002_Cube.001_cover
s off
f 47/1/1 31/2/1 33/3/1 52/4/1
@ -253,58 +216,37 @@ f 1/31/9 4/32/9 3/33/9 2/34/9
f 1/31/9 36/35/9 35/36/9 4/32/9
f 2/34/9 3/33/9 54/37/9 51/38/9 45/39/9 46/40/9
f 52/41/10 17/42/10 48/43/10 7/44/10
f 34/2/11 6/1/11 4/45/11 35/46/11
f 50/47/12 51/48/12 54/49/12 8/50/12
f 8/51/10 7/44/10 48/43/10 49/52/10 53/53/10 50/54/10
f 19/55/13 49/56/13 48/14/13 16/13/13
f 52/41/10 33/57/10 39/58/10 17/42/10
f 10/10/14 1/59/14 2/22/14 15/21/14
f 34/45/11 6/46/11 4/47/11 35/48/11
f 50/49/12 51/50/12 54/51/12 8/52/12
f 8/53/10 7/44/10 48/43/10 49/54/10 53/55/10 50/56/10
f 19/57/13 49/58/13 48/14/13 16/13/13
f 52/41/10 33/59/10 39/60/10 17/42/10
f 10/10/14 1/61/14 2/22/14 15/21/14
f 18/7/15 10/10/15 15/21/15 16/13/15
f 10/10/16 28/9/16 36/60/16 1/59/16
f 5/6/17 3/61/17 4/45/17 6/1/17
f 9/62/8 7/63/8 8/64/8 14/65/8
f 16/13/18 15/21/18 20/24/18 19/55/18
f 22/17/6 19/30/6 20/66/6 21/18/6
f 23/67/8 24/68/8 25/69/8 26/70/8
f 27/8/19 26/71/19 25/72/19 28/9/19
f 31/73/6 29/74/6 32/20/6 33/75/6
f 25/69/8 24/68/8 37/76/8 38/77/8
f 26/71/20 27/8/20 39/12/20 40/78/20
f 32/79/10 41/80/10 43/81/10 40/82/10 39/58/10 33/57/10
f 41/83/12 32/20/12 44/84/12 42/85/12
f 36/35/9 38/86/9 37/87/9 42/19/9 44/88/9 35/36/9
f 23/67/8 26/70/8 40/89/8 43/50/8
f 30/90/6 34/91/6 35/92/6 44/84/6
f 28/9/21 25/72/21 38/93/21 36/60/21
f 29/74/6 30/90/6 44/84/6 32/20/6
f 41/26/8 42/94/8 37/76/8 24/68/8 23/67/8 43/50/8
f 54/26/8 11/25/8 14/65/8 8/64/8
f 46/95/6 45/96/6 21/97/6 20/98/6
f 10/10/16 28/9/16 36/62/16 1/61/16
f 5/63/17 3/64/17 4/47/17 6/46/17
f 9/65/8 7/66/8 8/67/8 14/68/8
f 16/13/18 15/21/18 20/24/18 19/57/18
f 22/17/6 19/30/6 20/69/6 21/18/6
f 23/70/8 24/71/8 25/72/8 26/73/8
f 27/8/19 26/74/19 25/75/19 28/9/19
f 31/76/6 29/77/6 32/78/6 33/79/6
f 25/72/8 24/71/8 37/80/8 38/81/8
f 26/74/20 27/8/20 39/12/20 40/82/20
f 32/83/10 41/84/10 43/85/10 40/86/10 39/60/10 33/59/10
f 41/87/12 32/78/12 44/88/12 42/89/12
f 36/35/9 38/90/9 37/91/9 42/92/9 44/93/9 35/36/9
f 23/70/8 26/73/8 40/94/8 43/95/8
f 30/96/6 34/97/6 35/98/6 44/88/6
f 28/9/21 25/75/21 38/99/21 36/62/21
f 29/77/6 30/96/6 44/88/6 32/78/6
f 41/100/8 42/101/8 37/80/8 24/71/8 23/70/8 43/95/8
f 54/26/8 11/25/8 14/68/8 8/67/8
f 46/102/6 45/103/6 21/104/6 20/105/6
g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 13/99/10 47/100/10 9/101/10 14/102/10
f 6/103/9 12/104/9 11/105/9 5/106/9
f 13/99/10 29/107/10 31/108/10 47/100/10
f 6/103/9 34/109/9 30/110/9 12/104/9
f 14/111/22 11/112/22 12/113/22 13/114/22
f 29/115/23 13/114/23 12/113/23 30/116/23
g Cube.002_Cube.001_Cube.002_Cube.001_trim
f 61/7/24 70/8/24 71/9/24 57/10/24
f 70/8/25 61/7/25 60/11/25 75/12/25
f 59/13/26 82/14/26 60/11/26 61/7/26
f 84/15/6 86/16/6 65/17/6 64/18/6 80/19/6 85/20/6
f 58/21/27 56/22/27 81/23/27 63/24/27
f 65/17/6 86/16/6 83/29/6 62/30/6
f 62/55/28 83/56/28 82/14/28 59/13/28
f 57/10/29 55/59/29 56/22/29 58/21/29
f 61/7/30 57/10/30 58/21/30 59/13/30
f 57/10/31 71/9/31 72/60/31 55/59/31
f 59/13/32 58/21/32 63/24/32 62/55/32
f 65/17/6 62/30/6 63/66/6 64/18/6
f 66/67/8 67/68/8 68/69/8 69/70/8
f 70/8/33 69/71/33 68/72/33 71/9/33
f 68/69/8 67/68/8 73/76/8 74/77/8
f 69/71/34 70/8/34 75/12/34 76/78/34
f 66/67/8 69/70/8 76/89/8 79/50/8
f 71/9/35 68/72/35 74/93/35 72/60/35
f 77/26/8 78/94/8 73/76/8 67/68/8 66/67/8 79/50/8
f 81/95/6 80/96/6 64/97/6 63/98/6
f 13/106/10 47/107/10 9/108/10 14/109/10
f 6/110/9 12/111/9 11/112/9 5/113/9
f 13/106/10 29/114/10 31/115/10 47/107/10
f 6/110/9 34/116/9 30/117/9 12/111/9
f 14/118/22 11/119/22 12/120/22 13/121/22
f 29/122/23 13/121/23 12/120/23 30/123/23

View File

@ -1,327 +1,335 @@
# Blender v2.72 (sub 0) OBJ File: 'book-open.blend'
# Blender v2.78 (sub 0) OBJ File: 'book-open.blend'
# www.blender.org
o Cube.002_Cube.001
v -0.216625 0.012428 -0.485966
v 0.220555 -0.000000 -0.486750
v 0.220555 0.321341 -0.485966
v -0.208120 -0.000001 -0.462863
v -0.208120 0.310920 -0.485966
v -0.208120 0.306022 -0.464409
v 0.212051 0.306022 -0.464409
v 0.212051 0.310921 -0.485966
v 0.212050 -0.000000 -0.462862
v 0.212050 0.016802 -0.500002
v -0.208120 0.016801 -0.500002
v -0.208120 0.046213 -0.500002
v 0.212050 0.046214 -0.500002
v -0.216625 0.046213 -0.500002
v -0.216625 0.020445 -0.500002
v 0.220555 0.012429 -0.485966
v 0.220555 0.020446 -0.500002
v 0.220555 0.321340 -0.500002
v -0.216624 0.321341 -0.500002
v 0.220555 0.046214 -0.500002
v -0.216624 0.321341 -0.485966
v -0.208120 0.238235 -0.450057
v -0.216625 -0.000001 -0.486750
v 0.212051 0.238236 -0.450057
v -0.208120 -0.306023 -0.464409
v 0.212051 -0.306023 -0.464409
v -0.208120 -0.238237 -0.450057
v 0.212051 -0.238237 -0.450057
v 0.212050 -0.046214 -0.500003
v -0.208120 -0.046215 -0.500003
v -0.208120 -0.016803 -0.500003
v 0.212050 -0.016803 -0.500003
v -0.216625 -0.000001 -0.481442
v 0.220555 -0.000000 -0.481442
v 0.212051 -0.310922 -0.485967
v -0.208120 -0.310922 -0.485967
v 0.220555 -0.321342 -0.485967
v -0.216625 -0.012430 -0.485967
v -0.216625 -0.046215 -0.500003
v -0.216625 -0.020447 -0.500003
v 0.220555 -0.012429 -0.485967
v 0.220555 -0.020446 -0.500003
v 0.220555 -0.321341 -0.500003
v -0.216624 -0.321343 -0.500003
v 0.220555 -0.046214 -0.500003
v -0.216624 -0.321343 -0.485967
v -0.208120 -0.000001 -0.486750
v 0.212050 -0.000000 -0.486750
v 0.212051 -0.086920 -0.442244
v -0.208120 -0.086920 -0.442244
v 0.212051 0.086847 -0.442244
v -0.208120 0.086847 -0.442244
v 0.212050 0.043405 -0.447755
v -0.208120 0.043405 -0.447755
v 0.212050 -0.043478 -0.447755
v -0.208120 -0.043478 -0.447755
v -0.216625 -0.010224 -0.490836
v -0.216625 0.006214 -0.482857
v 0.220555 0.006214 -0.482857
v -0.208120 0.008400 -0.490836
v 0.212050 0.008401 -0.490836
v 0.220555 0.010223 -0.490836
v -0.216625 0.010222 -0.490836
v 0.220555 -0.010223 -0.490836
v 0.212050 -0.008401 -0.490836
v -0.208120 -0.008402 -0.490836
v 0.220555 -0.006215 -0.482858
v -0.216625 -0.006215 -0.482858
v 0.212050 0.012429 -0.485966
v 0.212050 -0.000000 -0.481442
v 0.212050 -0.012429 -0.485967
v 0.212050 0.006214 -0.482857
v 0.212050 -0.006215 -0.482858
v -0.208120 0.012428 -0.485966
v -0.208120 -0.000001 -0.481442
v -0.208120 -0.012430 -0.485967
v -0.208120 0.006214 -0.482857
v -0.208120 -0.006215 -0.482858
vt 0.965735 0.839196
vt 0.711783 0.839196
vt 0.711783 0.832541
vt 0.711783 0.503765
vt 0.711783 0.497110
vt 0.965736 0.497110
vt 0.395683 0.494736
vt 0.395683 0.261171
vt 0.403533 0.261171
vt 0.403532 0.502890
vt 0.687998 0.839196
vt 0.684635 0.832541
vt 0.987044 0.738829
vt 0.987044 0.497110
vt 1.000000 0.497110
vt 0.999999 0.712393
vt 0.999999 0.732556
vt 0.992051 0.000000
vt 0.992051 0.342086
vt 0.979145 0.342086
vt 0.979145 0.000000
vt 0.969912 1.000000
vt 0.969911 0.758280
vt 0.982867 0.764553
vt 0.982867 0.784716
vt 0.982868 0.999999
vt 0.403533 0.241720
vt 0.395683 0.241720
vt 0.395683 0.008154
vt 0.403532 0.000000
vt 0.684634 0.503765
vt 0.007850 0.008154
vt 0.000000 0.000000
vt 0.657486 0.832541
vt 0.657486 0.503765
vt 0.657486 0.497110
vt 0.681271 0.497110
vt 0.969911 0.497110
vt 0.982867 0.497110
vt 0.982868 0.712393
vt 0.982868 0.732556
vt 0.969912 0.738829
vt 0.966239 0.000000
vt 0.966239 0.342086
vt 0.987044 0.758280
vt 1.000000 0.764553
vt 1.000000 0.784716
vt 0.999999 1.000000
vt 0.987043 1.000000
vt 0.681271 0.839196
vt 0.657486 0.839196
vt 0.000000 0.261171
vt 0.007850 0.261171
vt 0.007850 0.494736
vt 0.000000 0.502891
vt 0.403534 0.839196
vt 0.403533 0.497110
vt 0.687998 0.497110
vt 0.974407 0.740555
vt 0.970635 0.748555
vt 0.967042 0.743692
vt 0.965736 0.748555
vt 0.967042 0.753417
vt 0.974406 0.756554
vt 0.991539 0.740555
vt 0.987768 0.748555
vt 0.984174 0.743692
vt 0.982868 0.748555
vt 0.984174 0.753417
vt 0.991539 0.756554
vt 0.044849 0.844977
vt 0.035593 0.844977
vt 0.035446 0.838322
vt 0.044554 0.838322
vt 0.956803 0.342087
vt 0.956803 0.335432
vt 0.964557 0.335432
vt 0.947366 0.342087
vt 0.949048 0.335432
vt 0.045143 0.838322
vt 0.054251 0.838322
vt 0.054104 0.844977
vt 0.044554 0.509546
vt 0.035446 0.509546
vt 0.035593 0.502890
vt 0.044849 0.502891
vt 0.964557 0.006655
vt 0.956803 0.006655
vt 0.956803 0.000000
vt 0.949048 0.006655
vt 0.947366 0.000000
vt 0.054104 0.502891
vt 0.054251 0.509546
vt 0.045143 0.509546
vt 0.000000 0.256308
vt 0.000000 0.251445
vt 0.007850 0.251445
vt 0.007850 0.256308
vt 0.000000 0.246582
vt 0.000000 0.241720
vt 0.007850 0.241720
vt 0.007850 0.246582
vt 0.403533 0.251445
vt 0.403533 0.256308
vt 0.395683 0.256308
vt 0.395683 0.251445
vt 0.403533 0.246582
vt 0.395683 0.246582
vt 0.779948 0.000000
vt 0.779948 1.000000
vt 0.724984 1.000000
vt 0.724983 0.000000
vt 0.717416 1.000000
vt 0.662450 1.000000
vt 0.662449 0.000000
vt 0.717416 0.000000
vt 0.184400 1.000000
vt 0.126957 0.970419
vt 0.221962 0.896695
vt 0.485666 0.793134
vt 0.471964 0.896524
vt 0.376957 0.970419
vt 0.216239 0.433002
vt 0.126957 0.260013
vt 0.059402 0.000000
vt 0.001957 0.029581
vt 0.009688 0.014790
vt 0.235664 0.793305
vt 0.013207 0.000000
vt 0.091241 0.566998
vt 0.055557 0.728328
vt 0.001957 0.739987
vt 0.110666 0.206866
vt 0.134686 0.985210
vt 0.096964 0.103476
vt 0.180555 0.271672
vt 0.138205 1.000000
vt 0.341239 0.566998
vt 0.305555 0.728328
vt 0.251957 0.739987
vt 0.251957 0.029581
vt 0.360664 0.206695
vt 0.388207 1.000000
vt 0.384688 0.985210
vt 0.434402 1.000000
vt 0.346962 0.103305
vt 0.466241 0.433002
vt 0.376957 0.260013
vt 0.309400 0.000000
vt 0.259687 0.014790
vt 0.263205 0.000000
vt 0.430558 0.271672
vt 0.636817 0.156314
vt 0.875000 0.156314
vt 0.875000 0.984312
vt 0.636817 0.984312
vt 0.000000 0.156314
vt 0.125000 0.156314
vt 0.125000 0.984312
vt 0.000000 0.984313
vt 1.000000 0.156314
vt 1.000000 0.984313
vt 0.363296 0.156314
vt 0.431676 0.156314
vt 0.431676 0.984311
vt 0.363296 0.984312
vt 0.500000 0.156314
vt 0.568437 0.156314
vt 0.568437 0.984311
vt 0.500000 0.984311
vn 0.577300 0.577300 -0.577300
vn 0.707100 0.000000 -0.707100
vn 0.000000 0.000000 -1.000000
vn -0.707100 0.000000 -0.707100
vn -0.577300 0.577300 -0.577300
vn -0.246900 -0.280700 0.927500
vn -0.658800 -0.172900 0.732100
vn -0.762700 -0.148700 0.629400
vn -0.577300 -0.577300 0.577300
vn 0.668800 -0.216600 -0.711100
vn 0.071700 -0.428700 -0.900500
vn -0.762700 0.148700 0.629400
vn -0.577300 0.577300 0.577300
vn -0.668800 -0.216600 -0.711100
vn 0.577300 0.577300 0.577300
vn 0.762700 0.148700 0.629400
vn -0.658800 0.172900 0.732100
vn -0.246900 0.280700 0.927500
vn -0.071700 -0.428700 -0.900500
vn 0.246900 0.280700 0.927500
vn -0.071700 0.428800 -0.900500
vn 0.071700 0.428800 -0.900500
vn -0.668800 0.216600 -0.711100
vn 0.577300 -0.577300 0.577300
vn 0.577300 -0.577300 -0.577300
vn 0.668800 0.216600 -0.711100
vn 0.762700 -0.148700 0.629400
vn -0.577300 -0.577300 -0.577300
vn 0.658800 -0.172900 0.732100
vn 0.246900 -0.280700 0.927500
vn 0.794100 0.350300 -0.496700
vn 0.814600 0.000000 -0.580000
vn 0.681100 -0.246900 0.689300
vn 0.660400 0.000000 0.750900
vn 0.681100 0.246800 0.689300
vn 0.794100 -0.350300 -0.496700
vn -0.794100 -0.350300 -0.496700
vn -0.814600 0.000000 -0.580000
vn -0.681100 0.246800 0.689300
vn -0.660400 0.000000 0.750900
vn -0.681100 -0.246900 0.689300
vn -0.794100 0.350300 -0.496700
vn -0.062900 0.569600 -0.819500
vn -0.023700 0.000000 -0.999700
vn -0.062900 -0.569600 -0.819500
vn 0.062900 0.569600 -0.819500
vn 0.023700 0.000000 -0.999700
vn 0.062900 -0.569600 -0.819500
vn 0.760600 0.000000 0.649100
vn 0.735000 -0.228600 0.638300
vn 0.658800 0.172900 0.732100
vn 0.735000 0.228600 0.638300
vn -0.735000 -0.228600 0.638300
vn -0.760600 0.000000 0.649100
vn -0.735000 0.228600 0.638300
vn -0.603500 0.559600 0.567900
vn 0.603500 0.559600 0.567900
vn 0.603500 -0.559600 0.567900
vn -0.603500 -0.559600 0.567900
vn 0.789000 -0.000200 0.614300
vn 0.684400 -0.166600 0.709800
vn -0.687600 0.027100 0.725500
vn -0.684400 0.166400 0.709800
vn 0.689800 0.093900 0.717800
vn 0.687600 -0.027100 0.725500
vn 0.689800 -0.093900 0.717800
vn 0.687600 0.027100 0.725500
vn 0.684400 0.166400 0.709800
vn -0.689800 0.093900 0.717800
vn -0.687600 -0.027100 0.725500
vn -0.789000 -0.000200 0.614300
vn -0.684400 -0.166600 0.709800
vn -0.689800 -0.093900 0.717800
v -0.012428 -0.485966 0.216625
v 0.000000 -0.486750 -0.220555
v -0.321341 -0.485966 -0.220555
v 0.000001 -0.462863 0.208120
v -0.310920 -0.485966 0.208120
v -0.306022 -0.464409 0.208120
v -0.306022 -0.464409 -0.212051
v -0.310921 -0.485966 -0.212051
v 0.000000 -0.462862 -0.212050
v -0.016802 -0.500002 -0.212050
v -0.016801 -0.500002 0.208120
v -0.046213 -0.500002 0.208120
v -0.046214 -0.500002 -0.212050
v -0.046213 -0.500002 0.216625
v -0.020445 -0.500002 0.216625
v -0.012429 -0.485966 -0.220555
v -0.020446 -0.500002 -0.220555
v -0.321340 -0.500002 -0.220555
v -0.321341 -0.500002 0.216624
v -0.046214 -0.500002 -0.220555
v -0.321341 -0.485966 0.216624
v -0.238235 -0.450057 0.208120
v 0.000001 -0.486750 0.216625
v -0.238236 -0.450057 -0.212051
v 0.306023 -0.464409 0.208120
v 0.306023 -0.464409 -0.212051
v 0.238237 -0.450057 0.208120
v 0.238236 -0.450057 -0.212051
v 0.046214 -0.500003 -0.212050
v 0.046215 -0.500003 0.208120
v 0.016803 -0.500003 0.208120
v 0.016802 -0.500003 -0.212050
v 0.000001 -0.481442 0.216625
v 0.000000 -0.481442 -0.220555
v 0.310922 -0.485967 -0.212051
v 0.310922 -0.485967 0.208120
v 0.321342 -0.485967 -0.220555
v 0.012430 -0.485967 0.216625
v 0.046215 -0.500003 0.216625
v 0.020447 -0.500003 0.216625
v 0.012429 -0.485967 -0.220555
v 0.020446 -0.500003 -0.220555
v 0.321341 -0.500003 -0.220555
v 0.321343 -0.500003 0.216624
v 0.046214 -0.500003 -0.220555
v 0.321343 -0.485967 0.216624
v 0.000001 -0.486750 0.208120
v 0.000000 -0.486750 -0.212050
v 0.086920 -0.442244 -0.212051
v 0.086920 -0.442244 0.208120
v -0.086847 -0.442244 -0.212050
v -0.086847 -0.442244 0.208120
v -0.043405 -0.447755 -0.212050
v -0.043405 -0.447755 0.208120
v 0.043478 -0.447755 -0.212050
v 0.043478 -0.447755 0.208120
v 0.010224 -0.490836 0.216625
v -0.006214 -0.482857 0.216625
v -0.006214 -0.482857 -0.220555
v -0.008400 -0.490836 0.208120
v -0.008401 -0.490836 -0.212050
v -0.010223 -0.490836 -0.220555
v -0.010222 -0.490836 0.216625
v 0.010223 -0.490836 -0.220555
v 0.008401 -0.490836 -0.212050
v 0.008402 -0.490836 0.208120
v 0.006215 -0.482858 -0.220555
v 0.006215 -0.482858 0.216625
v -0.012429 -0.485966 -0.212050
v 0.000000 -0.481442 -0.212050
v 0.012429 -0.485967 -0.212050
v -0.006214 -0.482857 -0.212050
v 0.006215 -0.482858 -0.212050
v -0.012428 -0.485966 0.208120
v 0.000001 -0.481442 0.208120
v 0.012430 -0.485967 0.208120
v -0.006214 -0.482857 0.208120
v 0.006215 -0.482858 0.208120
vt 0.9657 0.8392
vt 0.7118 0.8392
vt 0.7118 0.8325
vt 0.7118 0.5038
vt 0.7118 0.4971
vt 0.9657 0.4971
vt 0.3957 0.4947
vt 0.3957 0.2612
vt 0.4035 0.2612
vt 0.4035 0.5029
vt 0.6880 0.8392
vt 0.6846 0.8325
vt 0.9870 0.7388
vt 0.9870 0.4971
vt 1.0000 0.4971
vt 1.0000 0.7124
vt 1.0000 0.7326
vt 0.9921 0.0000
vt 0.9921 0.3421
vt 0.9791 0.3421
vt 0.9791 0.0000
vt 0.9699 1.0000
vt 0.9699 0.7583
vt 0.9829 0.7646
vt 0.9829 0.7847
vt 0.9829 1.0000
vt 0.4035 0.2417
vt 0.3957 0.2417
vt 0.3957 0.0082
vt 0.4035 0.0000
vt 0.6846 0.5038
vt 0.0078 0.0082
vt 0.0000 0.0000
vt 0.6575 0.8325
vt 0.6575 0.5038
vt 0.6846 0.5038
vt 0.6846 0.8325
vt 0.6575 0.4971
vt 0.6813 0.4971
vt 0.9699 0.4971
vt 0.9829 0.4971
vt 0.9829 0.7124
vt 0.9829 0.7326
vt 0.9699 0.7388
vt 0.9662 0.0000
vt 0.9791 0.0000
vt 0.9791 0.3421
vt 0.9662 0.3421
vt 0.9870 0.7583
vt 1.0000 0.7646
vt 1.0000 0.7847
vt 1.0000 1.0000
vt 0.9870 1.0000
vt 0.6813 0.8392
vt 0.6575 0.8392
vt 0.0000 0.2612
vt 0.0079 0.2612
vt 0.0078 0.4947
vt 0.0000 0.5029
vt 0.4035 0.8392
vt 0.4035 0.4971
vt 0.6880 0.4971
vt 0.9744 0.7406
vt 0.9706 0.7486
vt 0.9670 0.7437
vt 0.9657 0.7486
vt 0.9670 0.7534
vt 0.9744 0.7566
vt 0.9915 0.7406
vt 0.9878 0.7486
vt 0.9842 0.7437
vt 0.9829 0.7486
vt 0.9842 0.7534
vt 0.9915 0.7566
vt 0.0448 0.8450
vt 0.0356 0.8450
vt 0.0354 0.8383
vt 0.0446 0.8383
vt 0.9662 0.3421
vt 0.9568 0.3421
vt 0.9568 0.3354
vt 0.9646 0.3354
vt 0.9474 0.3421
vt 0.9490 0.3354
vt 0.0448 0.8450
vt 0.0451 0.8383
vt 0.0543 0.8383
vt 0.0541 0.8450
vt 0.0446 0.5095
vt 0.0354 0.5095
vt 0.0356 0.5029
vt 0.0448 0.5029
vt 0.9662 0.0000
vt 0.9646 0.0067
vt 0.9568 0.0067
vt 0.9568 0.0000
vt 0.9490 0.0067
vt 0.9474 0.0000
vt 0.0448 0.5029
vt 0.0541 0.5029
vt 0.0543 0.5095
vt 0.0451 0.5095
vt 0.0000 0.2563
vt 0.0000 0.2514
vt 0.0079 0.2514
vt 0.0079 0.2563
vt 0.0000 0.2466
vt 0.0000 0.2417
vt 0.0079 0.2417
vt 0.0079 0.2466
vt 0.4035 0.2514
vt 0.4035 0.2563
vt 0.3957 0.2563
vt 0.3957 0.2514
vt 0.4035 0.2466
vt 0.3957 0.2466
vt 0.7799 0.0000
vt 0.7799 1.0000
vt 0.7250 1.0000
vt 0.7250 0.0000
vt 0.7174 1.0000
vt 0.6624 1.0000
vt 0.6624 0.0000
vt 0.7174 0.0000
vt 0.1844 1.0000
vt 0.1270 0.9704
vt 0.2220 0.8967
vt 0.4857 0.7931
vt 0.4720 0.8965
vt 0.3770 0.9704
vt 0.2162 0.4330
vt 0.1270 0.2600
vt 0.0594 0.0000
vt 0.0020 0.0296
vt 0.0097 0.0148
vt 0.2357 0.7933
vt 0.0132 0.0000
vt 0.0912 0.5670
vt 0.0556 0.7283
vt 0.0020 0.7400
vt 0.1107 0.2069
vt 0.1347 0.9852
vt 0.0970 0.1035
vt 0.1806 0.2717
vt 0.1382 1.0000
vt 0.3412 0.5670
vt 0.3056 0.7283
vt 0.2520 0.7400
vt 0.2520 0.0296
vt 0.3607 0.2067
vt 0.3882 1.0000
vt 0.3847 0.9852
vt 0.4344 1.0000
vt 0.3470 0.1033
vt 0.4662 0.4330
vt 0.3770 0.2600
vt 0.3094 0.0000
vt 0.2597 0.0148
vt 0.2632 0.0000
vt 0.4306 0.2717
vt 0.6368 0.1563
vt 0.8750 0.1563
vt 0.8750 0.9843
vt 0.6368 0.9843
vt 0.0000 0.1563
vt 0.1250 0.1563
vt 0.1250 0.9843
vt 0.0000 0.9843
vt 1.0000 0.1563
vt 1.0000 0.9843
vt 0.3633 0.1563
vt 0.4317 0.1563
vt 0.4317 0.9843
vt 0.3633 0.9843
vt 0.5000 0.1563
vt 0.5684 0.1563
vt 0.5684 0.9843
vt 0.5000 0.9843
vn -0.5773 -0.5773 -0.5773
vn 0.0000 -0.7071 -0.7071
vn 0.0000 -1.0000 0.0000
vn 0.0000 -0.7071 0.7071
vn -0.5773 -0.5773 0.5773
vn 0.2807 0.9275 0.2469
vn 0.1729 0.7321 0.6588
vn 0.1487 0.6294 0.7627
vn 0.5773 0.5773 0.5773
vn 0.2166 -0.7111 -0.6688
vn 0.4287 -0.9005 -0.0717
vn -0.1487 0.6294 0.7627
vn -0.5773 0.5773 0.5773
vn 0.2166 -0.7111 0.6688
vn -0.5773 0.5773 -0.5773
vn -0.1487 0.6294 -0.7627
vn -0.1729 0.7321 0.6588
vn -0.2807 0.9275 0.2469
vn 0.4287 -0.9005 0.0717
vn -0.2807 0.9275 -0.2469
vn -0.4288 -0.9005 0.0717
vn -0.4288 -0.9005 -0.0717
vn -0.2166 -0.7111 0.6688
vn 0.5773 0.5773 -0.5773
vn 0.5773 -0.5773 -0.5773
vn -0.2166 -0.7111 -0.6688
vn 0.1487 0.6294 -0.7627
vn 0.5773 -0.5773 0.5773
vn 0.1729 0.7321 -0.6588
vn 0.2807 0.9275 -0.2469
vn -0.3503 -0.4967 -0.7941
vn 0.0000 -0.5800 -0.8146
vn 0.2469 0.6893 -0.6811
vn 0.0000 0.7509 -0.6604
vn -0.2468 0.6893 -0.6811
vn 0.3503 -0.4967 -0.7941
vn 0.3503 -0.4967 0.7941
vn 0.0000 -0.5800 0.8146
vn -0.2468 0.6893 0.6811
vn 0.0000 0.7509 0.6604
vn 0.2469 0.6893 0.6811
vn -0.3503 -0.4967 0.7941
vn -0.5696 -0.8195 0.0629
vn 0.0000 -0.9997 0.0237
vn 0.5696 -0.8195 0.0629
vn -0.5696 -0.8195 -0.0629
vn 0.0000 -0.9997 -0.0237
vn 0.5696 -0.8195 -0.0629
vn 0.0000 0.6491 -0.7606
vn 0.2286 0.6383 -0.7350
vn -0.1729 0.7321 -0.6588
vn -0.2286 0.6383 -0.7350
vn 0.2286 0.6383 0.7350
vn 0.0000 0.6491 0.7606
vn -0.2286 0.6383 0.7350
vn -0.5596 0.5679 0.6035
vn -0.5596 0.5679 -0.6035
vn 0.5596 0.5679 -0.6035
vn 0.5596 0.5679 0.6035
vn 0.0002 0.6143 -0.7890
vn 0.1666 0.7098 -0.6844
vn -0.0271 0.7255 0.6876
vn -0.1664 0.7098 0.6844
vn -0.0939 0.7178 -0.6898
vn 0.0271 0.7255 -0.6876
vn 0.0939 0.7178 -0.6898
vn -0.0271 0.7255 -0.6876
vn -0.1664 0.7098 -0.6844
vn -0.0939 0.7178 0.6898
vn 0.0271 0.7255 0.6876
vn 0.0002 0.6143 0.7890
vn 0.1666 0.7098 0.6844
vn 0.0939 0.7178 0.6898
g Cube.002_Cube.001_Cube.002_Cube.001_cover
s 1
f 18/1/1 20/2/2 13/3/3 12/4/3 14/5/4 19/6/5
@ -333,86 +341,86 @@ f 3/22/15 16/23/16 17/24/10 20/25/2 18/26/1
f 1/27/12 74/28/17 5/29/18 21/30/13
f 13/3/3 10/12/11 11/31/19 12/4/3
f 21/30/13 5/29/18 8/32/20 3/33/15
f 29/34/3 30/35/3 31/31/21 32/12/22
f 31/31/21 30/35/3 39/36/4 40/37/23
f 37/38/24 43/39/25 45/40/2 42/41/26 41/42/27
f 43/43/25 37/21/24 46/20/9 44/44/28
f 38/45/8 40/46/23 39/47/4 44/48/28 46/49/9
f 29/34/3 32/12/22 42/50/26 45/51/2
f 41/52/27 71/53/29 35/54/30 37/55/24
f 35/54/30 36/7/6 46/10/9 37/55/24
f 43/56/25 44/57/28 39/36/4 30/35/3 29/34/3 45/51/2
f 15/58/14 14/5/4 12/4/3 11/31/19
f 42/41/26 64/59/31 41/42/27
f 41/42/27 64/59/31 2/60/32 67/61/33
f 67/61/33 2/60/32 34/62/34
f 34/62/34 2/60/32 59/63/35
f 2/60/32 62/64/36 16/23/16 59/63/35
f 16/23/16 62/64/36 17/24/10
f 15/17/14 63/65/37 1/13/12
f 23/66/38 58/67/39 1/13/12 63/65/37
f 58/67/39 23/66/38 33/68/40
f 68/69/41 33/68/40 23/66/38
f 38/45/8 68/69/41 23/66/38 57/70/42
f 57/70/42 40/46/23 38/45/8
f 40/71/23 57/72/42 66/73/43 31/74/21
f 57/44/42 23/75/38 47/76/44 66/77/43
f 47/76/44 23/75/38 63/78/37 60/79/45
f 15/71/14 11/80/19 60/81/45 63/82/37
f 32/83/22 65/84/46 64/85/31 42/86/26
f 64/43/31 65/87/46 48/88/47 2/89/32
f 48/88/47 61/90/48 62/91/36 2/89/32
f 17/86/10 62/92/36 61/93/48 10/94/11
f 67/95/33 34/96/34 70/97/49 73/98/50
f 59/99/35 16/100/16 69/101/51 72/102/52
f 41/52/27 67/95/33 73/98/50 71/53/29
f 34/96/34 59/99/35 72/102/52 70/97/49
f 33/103/40 68/104/41 78/105/53 75/106/54
f 1/27/12 58/107/39 77/108/55 74/28/17
f 68/104/41 38/9/8 76/8/7 78/105/53
f 58/107/39 33/103/40 75/106/54 77/108/55
f 8/32/20 69/101/51 16/100/16 3/33/15
f 10/94/11 61/93/48 60/81/45 11/80/19
f 47/76/44 60/79/45 61/90/48 48/88/47
f 65/87/46 66/77/43 47/76/44 48/88/47
f 31/74/21 66/73/43 65/84/46 32/83/22
f 29/34/3 30/35/3 31/36/21 32/37/22
f 31/36/21 30/35/3 39/38/4 40/39/23
f 37/40/24 43/41/25 45/42/2 42/43/26 41/44/27
f 43/45/25 37/46/24 46/47/9 44/48/28
f 38/49/8 40/50/23 39/51/4 44/52/28 46/53/9
f 29/34/3 32/37/22 42/54/26 45/55/2
f 41/56/27 71/57/29 35/58/30 37/59/24
f 35/58/30 36/7/6 46/10/9 37/59/24
f 43/60/25 44/61/28 39/38/4 30/35/3 29/34/3 45/55/2
f 15/62/14 14/5/4 12/4/3 11/31/19
f 42/43/26 64/63/31 41/44/27
f 41/44/27 64/63/31 2/64/32 67/65/33
f 67/65/33 2/64/32 34/66/34
f 34/66/34 2/64/32 59/67/35
f 2/64/32 62/68/36 16/23/16 59/67/35
f 16/23/16 62/68/36 17/24/10
f 15/17/14 63/69/37 1/13/12
f 23/70/38 58/71/39 1/13/12 63/69/37
f 58/71/39 23/70/38 33/72/40
f 68/73/41 33/72/40 23/70/38
f 38/49/8 68/73/41 23/70/38 57/74/42
f 57/74/42 40/50/23 38/49/8
f 40/75/23 57/76/42 66/77/43 31/78/21
f 57/79/42 23/80/38 47/81/44 66/82/43
f 47/81/44 23/80/38 63/83/37 60/84/45
f 15/85/14 11/86/19 60/87/45 63/88/37
f 32/89/22 65/90/46 64/91/31 42/92/26
f 64/93/31 65/94/46 48/95/47 2/96/32
f 48/95/47 61/97/48 62/98/36 2/96/32
f 17/99/10 62/100/36 61/101/48 10/102/11
f 67/103/33 34/104/34 70/105/49 73/106/50
f 59/107/35 16/108/16 69/109/51 72/110/52
f 41/56/27 67/103/33 73/106/50 71/57/29
f 34/104/34 59/107/35 72/110/52 70/105/49
f 33/111/40 68/112/41 78/113/53 75/114/54
f 1/27/12 58/115/39 77/116/55 74/28/17
f 68/112/41 38/9/8 76/8/7 78/113/53
f 58/115/39 33/111/40 75/114/54 77/116/55
f 8/32/20 69/109/51 16/108/16 3/33/15
f 10/102/11 61/101/48 60/87/45 11/86/19
f 47/81/44 60/84/45 61/97/48 48/95/47
f 65/94/46 66/82/43 47/81/44 48/95/47
f 31/78/21 66/77/43 65/90/46 32/89/22
g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 8/109/20 5/110/18 6/111/56 7/112/57
f 35/113/30 26/114/58 25/115/59 36/116/6
f 9/117/60 69/118/51 53/119/61
f 50/120/62 56/121/63 76/122/7
f 24/123/64 69/118/51 8/124/20
f 9/125/60 71/126/29 73/127/50
f 51/128/65 53/119/61 69/118/51
f 9/125/60 73/127/50 70/129/49
f 28/130/66 26/131/58 35/132/30
f 71/126/29 49/133/67 28/130/66
f 72/134/52 69/118/51 9/117/60
f 71/126/29 55/135/68 49/133/67
f 28/130/66 35/132/30 71/126/29
f 24/123/64 8/124/20 7/136/57
f 69/118/51 24/123/64 51/128/65
f 9/125/60 55/135/68 71/126/29
f 70/137/49 72/134/52 9/117/60
f 22/138/69 6/139/56 5/140/18
f 74/141/17 52/142/70 22/138/69
f 75/143/54 78/144/53 4/145/71
f 74/141/17 54/146/72 52/142/70
f 22/138/69 5/140/18 74/141/17
f 27/147/73 76/122/7 36/148/6
f 4/149/71 74/141/17 77/150/55
f 27/147/73 50/120/62 76/122/7
f 4/149/71 77/150/55 75/151/54
f 4/145/71 78/144/53 76/122/7
f 4/149/71 54/146/72 74/141/17
f 27/147/73 36/148/6 25/152/59
f 56/121/63 4/145/71 76/122/7
f 8/117/20 5/118/18 6/119/56 7/120/57
f 35/121/30 26/122/58 25/123/59 36/124/6
f 9/125/60 69/126/51 53/127/61
f 50/128/62 56/129/63 76/130/7
f 24/131/64 69/126/51 8/132/20
f 9/133/60 71/134/29 73/135/50
f 51/136/65 53/127/61 69/126/51
f 9/133/60 73/135/50 70/137/49
f 28/138/66 26/139/58 35/140/30
f 71/134/29 49/141/67 28/138/66
f 72/142/52 69/126/51 9/125/60
f 71/134/29 55/143/68 49/141/67
f 28/138/66 35/140/30 71/134/29
f 24/131/64 8/132/20 7/144/57
f 69/126/51 24/131/64 51/136/65
f 9/133/60 55/143/68 71/134/29
f 70/145/49 72/142/52 9/125/60
f 22/146/69 6/147/56 5/148/18
f 74/149/17 52/150/70 22/146/69
f 75/151/54 78/152/53 4/153/71
f 74/149/17 54/154/72 52/150/70
f 22/146/69 5/148/18 74/149/17
f 27/155/73 76/130/7 36/156/6
f 4/157/71 74/149/17 77/158/55
f 27/155/73 50/128/62 76/130/7
f 4/157/71 77/158/55 75/159/54
f 4/153/71 78/152/53 76/130/7
f 4/157/71 54/154/72 74/149/17
f 27/155/73 36/156/6 25/160/59
f 56/129/63 4/153/71 76/130/7
g Cube.002_Cube.001_Cube.002_Cube.001_pages
f 50/153/62 27/154/73 28/155/66 49/156/67
f 6/157/56 22/158/69 24/159/64 7/160/57
f 27/154/73 25/161/59 26/162/58 28/155/66
f 52/163/70 54/164/72 53/165/61 51/166/65
f 22/158/69 52/163/70 51/166/65 24/159/64
f 4/167/71 56/168/63 55/169/68 9/170/60
f 54/164/72 4/167/71 9/170/60 53/165/61
f 56/168/63 50/153/62 49/156/67 55/169/68
f 50/161/62 27/162/73 28/163/66 49/164/67
f 6/165/56 22/166/69 24/167/64 7/168/57
f 27/162/73 25/169/59 26/170/58 28/163/66
f 52/171/70 54/172/72 53/173/61 51/174/65
f 22/166/69 52/171/70 51/174/65 24/167/64
f 4/175/71 56/176/63 55/177/68 9/178/60
f 54/172/72 4/175/71 9/178/60 53/173/61
f 56/176/63 50/161/62 49/164/67 55/177/68

View File

@ -0,0 +1,202 @@
# Blender v2.78 (sub 0) OBJ File: ''
# www.blender.org
o Cube_Cube.001
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.437500 -0.437500 -0.437500
v 0.437500 0.437500 -0.437500
v 0.437500 -0.437500 0.437500
v 0.437500 0.437500 0.437500
v -0.437500 -0.437500 -0.437500
v -0.437500 0.437500 -0.437500
v -0.437500 -0.437500 0.437500
v -0.437500 0.437500 0.437500
v -0.500000 -0.437500 -0.437500
v -0.500000 0.437500 -0.437500
v -0.500000 -0.437500 0.437500
v -0.500000 0.437500 0.437500
v 0.500000 -0.437500 -0.437500
v 0.500000 0.437500 -0.437500
v 0.500000 -0.437500 0.437500
v 0.500000 0.437500 0.437500
v 0.437500 -0.437500 -0.500000
v 0.437500 0.437500 -0.500000
v -0.437500 -0.437500 -0.500000
v -0.437500 0.437500 -0.500000
v 0.437500 -0.437500 0.500000
v 0.437500 0.437500 0.500000
v -0.437500 -0.437500 0.500000
v -0.437500 0.437500 0.500000
v 0.437500 0.500000 -0.437500
v 0.437500 0.500000 0.437500
v -0.437500 0.500000 -0.437500
v -0.437500 0.500000 0.437500
v 0.437500 -0.500000 -0.437500
v 0.437500 -0.500000 0.437500
v -0.437500 -0.500000 -0.437500
v -0.437500 -0.500000 0.437500
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 0.9375
vt -0.0000 0.0625
vt 0.0625 0.9375
vt -0.0000 0.0625
vt -0.0000 0.9375
vt -0.0000 0.9375
vt -0.0000 0.0625
vt 0.0625 0.0625
vt 0.0625 0.9375
vt -0.0000 0.9375
vt 0.0625 0.9375
vt 0.0625 0.0625
vt -0.0000 0.0625
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0625
vt 0.0625 0.9375
vt 0.0625 0.0625
vt -0.0000 0.0625
vt -0.0000 0.9375
vt 1.0000 0.9375
vt 1.0000 0.0625
vt 0.9375 0.9375
vt 1.0000 0.9375
vt 0.9375 0.9375
vt 1.0000 0.9375
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0625
vt 1.0000 0.0625
vt 1.0000 0.9375
vt 1.0000 0.0625
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0625
vt 1.0000 0.9375
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt -0.0000 0.0000
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 1.0000
vt 0.0625 0.9375
vt 1.0000 1.0000
vt 0.9375 0.9375
vt -0.0000 1.0000
vt 0.0625 0.9375
vt 0.9375 0.9375
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 0.0000
vt 1.0000 1.0000
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.9375 0.9375
vt -0.0000 0.0000
vt 0.0625 0.0625
vt -0.0000 1.0000
vt 0.0625 0.9375
vt -0.0000 0.0000
vt 0.0625 0.9375
vt 0.0625 0.0625
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.9375 0.9375
vt 1.0000 1.0000
vt 0.0625 0.9375
vt -0.0000 1.0000
vt 0.0625 0.0625
vt 0.0625 0.0625
vt 0.0625 0.9375
vt 0.9375 0.9375
vt 1.0000 1.0000
vt 0.9375 0.0625
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
g Cube_Cube.001_frame
s off
f 25/1/1 27/2/1 13/3/1 9/4/1
f 26/5/2 25/6/2 9/4/2 10/7/2
f 21/8/3 22/9/3 10/7/3 9/4/3
f 24/10/4 23/11/4 11/12/4 12/13/4
f 23/14/1 21/8/1 9/4/1 11/15/1
f 12/13/5 10/16/5 22/17/5 24/10/5
f 28/18/5 26/19/5 10/16/5 14/20/5
f 14/21/6 13/22/6 27/23/6 28/24/6
f 18/25/3 17/26/3 13/3/3 14/27/3
f 17/26/1 19/28/1 15/29/1 13/3/1
f 20/30/4 16/31/4 15/32/4 19/33/4
f 20/30/5 18/34/5 14/20/5 16/31/5
f 16/31/6 32/35/6 31/36/6 15/32/6
f 31/37/1 29/38/1 11/15/1 15/29/1
f 12/39/2 11/40/2 29/41/2 30/42/2
f 30/43/5 32/44/5 16/31/5 12/13/5
f 15/32/4 11/12/4 38/45/4 40/46/4
f 13/22/6 15/32/6 40/46/6 39/47/6
f 9/4/3 13/3/3 39/48/3 37/49/3
f 11/40/2 9/4/2 37/49/2 38/50/2
f 16/31/6 14/21/6 35/51/6 36/52/6
f 12/13/4 16/31/4 36/52/4 34/53/4
f 10/7/2 12/39/2 34/54/2 33/55/2
f 14/27/3 10/7/3 33/55/3 35/56/3
f 2/57/1 6/58/1 35/59/1 33/60/1
f 4/61/1 2/57/1 33/60/1 34/62/1
f 8/63/1 4/61/1 34/62/1 36/64/1
f 6/58/1 8/63/1 36/64/1 35/59/1
f 6/65/2 18/66/2 20/67/2 8/63/2
f 7/68/2 8/63/2 20/67/2 19/69/2
f 7/68/2 19/69/2 17/70/2 5/71/2
f 5/71/2 17/70/2 18/66/2 6/65/2
f 7/72/5 5/73/5 39/74/5 40/75/5
f 5/73/5 1/76/5 37/77/5 39/74/5
f 1/76/5 3/78/5 38/79/5 37/77/5
f 3/78/5 7/72/5 40/75/5 38/79/5
f 3/80/3 4/61/3 30/81/3 29/82/3
f 8/63/3 32/83/3 30/81/3 4/61/3
f 7/68/3 31/84/3 32/83/3 8/63/3
f 3/80/3 29/82/3 31/84/3 7/68/3
f 3/85/6 23/86/6 24/87/6 4/88/6
f 4/88/6 24/87/6 22/89/6 2/90/6
f 2/90/6 22/89/6 21/91/6 1/76/6
f 1/76/6 21/91/6 23/86/6 3/85/6
f 2/90/4 1/76/4 25/92/4 26/93/4
f 2/90/4 26/93/4 28/94/4 6/95/4
f 5/73/4 6/95/4 28/94/4 27/96/4
f 5/73/4 27/96/4 25/92/4 1/76/4
g Cube_Cube.001_glass
f 9/4/6 10/7/6 12/39/6 11/40/6
f 11/12/3 12/13/3 16/31/3 15/32/3
f 15/32/2 16/31/2 14/21/2 13/22/2
f 13/3/4 14/27/4 10/7/4 9/4/4
f 11/15/5 15/29/5 13/3/5 9/4/5
f 16/31/1 12/13/1 10/16/1 14/20/1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

View File

@ -12,7 +12,7 @@ else
S = function(s) return s end
end
if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
if minetest.get_modpath("unified_inventory") or not minetest.settings:get_bool("creative_mode") then
ilights.expect_infinite_stacks = false
else
ilights.expect_infinite_stacks = true

View File

@ -92,6 +92,19 @@ minetest.register_node("inbox:empty", {
end
end
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local owner = meta:get_string("owner")
if player:get_player_name() == owner or
minetest.check_player_privs(player, "protection_bypass") and
clicker:get_player_control().aux1 then
return stack:get_count()
end
return 0
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
})
function inbox.get_inbox_formspec(pos)

View File

@ -108,6 +108,6 @@ minetest.register_lbm({
end
})
if minetest.setting_get("log_mods") then
if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!"))
end

View File

@ -65,6 +65,6 @@ minetest.register_craft({
}
})
if minetest.setting_get("log_mods") then
if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/coffeetable] "..S("Loaded!"))
end

View File

@ -48,6 +48,6 @@ minetest.register_craft({
}
})
if minetest.setting_get("log_mods") then
if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/endtable] "..S("Loaded!"))
end

View File

@ -122,6 +122,6 @@ minetest.register_lbm({
end
})
if minetest.setting_get("log_mods") then
if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!"))
end

View File

@ -122,6 +122,6 @@ minetest.register_lbm({
end
})
if minetest.setting_get("log_mods") then
if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/sofas] "..S("Loaded!"))
end

View File

@ -66,30 +66,63 @@ minetest.register_on_placenode(mesecon.on_placenode)
minetest.register_on_dignode(mesecon.on_dignode)
-- Overheating service for fast circuits
local OVERHEAT_MAX = mesecon.setting("overheat_max", 20)
local COOLDOWN_TIME = mesecon.setting("cooldown_time", 2.0)
local COOLDOWN_STEP = mesecon.setting("cooldown_granularity", 0.5)
local COOLDOWN_MULTIPLIER = OVERHEAT_MAX / COOLDOWN_TIME
local cooldown_timer = 0.0
local object_heat = {}
-- returns true if heat is too high
mesecon.do_overheat = function(pos)
local meta = minetest.get_meta(pos)
local heat = meta:get_int("heat") or 0
heat = heat + 1
meta:set_int("heat", heat)
if heat < mesecon.setting("overheat_max", 20) then
mesecon.queue:add_action(pos, "cooldown", {}, 1, nil, 0)
else
function mesecon.do_overheat(pos)
local id = minetest.hash_node_position(pos)
local heat = (object_heat[id] or 0) + 1
object_heat[id] = heat
if heat >= OVERHEAT_MAX then
minetest.log("action", "Node overheats at " .. minetest.pos_to_string(pos))
object_heat[id] = nil
return true
end
return false
end
function mesecon.do_cooldown(pos)
local id = minetest.hash_node_position(pos)
object_heat[id] = nil
end
mesecon.queue:add_function("cooldown", function (pos)
local meta = minetest.get_meta(pos)
local heat = meta:get_int("heat")
function mesecon.get_heat(pos)
local id = minetest.hash_node_position(pos)
return object_heat[id] or 0
end
if (heat > 0) then
meta:set_int("heat", heat - 1)
function mesecon.move_hot_nodes(moved_nodes)
local new_heat = {}
for _, n in ipairs(moved_nodes) do
local old_id = minetest.hash_node_position(n.oldpos)
local new_id = minetest.hash_node_position(n.pos)
new_heat[new_id] = object_heat[old_id]
object_heat[old_id] = nil
end
end)
for id, heat in pairs(new_heat) do
object_heat[id] = heat
end
end
local function global_cooldown(dtime)
cooldown_timer = cooldown_timer + dtime
if cooldown_timer < COOLDOWN_STEP then
return -- don't overload the CPU
end
local cooldown = COOLDOWN_MULTIPLIER * cooldown_timer
cooldown_timer = 0
for id, heat in pairs(object_heat) do
heat = heat - cooldown
if heat <= 0 then
object_heat[id] = nil -- free some RAM
else
object_heat[id] = heat
end
end
end
minetest.register_globalstep(global_cooldown)

View File

@ -74,7 +74,8 @@ local function register_gate(name, inputnumber, assess, recipe, description)
assess = assess,
onstate = basename.."_on",
offstate = basename.."_off",
inputnumber = inputnumber
inputnumber = inputnumber,
after_dig_node = mesecon.do_cooldown,
},{
tiles = {"jeija_microcontroller_bottom.png^".."jeija_gate_off.png^"..
"jeija_gate_"..name..".png"},

View File

@ -315,7 +315,7 @@ local function create_environment(pos, mem, event)
port = vports_copy,
event = event,
mem = mem,
heat = minetest.get_meta(pos):get_int("heat"),
heat = mesecon.get_heat(pos),
heat_max = mesecon.setting("overheat_max", 20),
print = safe_print,
interrupt = get_interrupt(pos),
@ -478,14 +478,13 @@ local function reset_meta(pos, code, errmsg)
local meta = minetest.get_meta(pos)
meta:set_string("code", code)
code = minetest.formspec_escape(code or "")
errmsg = minetest.formspec_escape(errmsg or "")
meta:set_string("formspec", "size[10,8]"..
"background[-0.2,-0.25;10.4,8.75;jeija_luac_background.png]"..
"textarea[0.2,0.6;10.2,5;code;;"..code.."]"..
"image_button[3.75,6;2.5,1;jeija_luac_runbutton.png;program;]"..
"image_button_exit[9.72,-0.25;0.425,0.4;jeija_close_window.png;exit;]"..
"label[0.1,5;"..errmsg.."]")
meta:set_int("heat", 0)
errmsg = minetest.formspec_escape(tostring(errmsg or ""))
meta:set_string("formspec", "size[12,10]"..
"background[-0.2,-0.25;12.4,10.75;jeija_luac_background.png]"..
"textarea[0.2,0.2;12.2,9.5;code;;"..code.."]"..
"image_button[4.75,8.75;2.5,1;jeija_luac_runbutton.png;program;]"..
"image_button_exit[11.72,-0.25;0.425,0.4;jeija_close_window.png;exit;]"..
"label[0.1,9;"..errmsg.."]")
meta:set_int("luac_id", math.random(1, 65535))
end
@ -626,6 +625,7 @@ for d = 0, 1 do
d = d == 1,
},
after_dig_node = function (pos, node)
mesecon.do_cooldown(pos)
mesecon.receptor_off(pos, output_rules)
end,
is_luacontroller = true,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 718 B

View File

@ -246,3 +246,4 @@ mesecon.register_mvps_stopper("doors:door_steel_t_1")
mesecon.register_mvps_stopper("doors:door_steel_b_2")
mesecon.register_mvps_stopper("doors:door_steel_t_2")
mesecon.register_mvps_stopper("default:chest_locked")
mesecon.register_on_mvps_move(mesecon.move_hot_nodes)

View File

@ -10,6 +10,11 @@ Licensed under the zlib license. See LICENSE.md for more information.
moreores = {}
local default_tin = false
if minetest.registered_items["default:tin_ingot"] then
default_tin = true
end
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
@ -266,17 +271,6 @@ local oredefs = {
full_punch_interval = 1.0,
damage_groups = {fleshy = 6},
},
tin = {
description = "Tin",
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
oredef = {clust_scarcity = moreores.tin_chunk_size * moreores.tin_chunk_size * moreores.tin_chunk_size,
clust_num_ores = moreores.tin_ore_per_chunk,
clust_size = moreores.tin_chunk_size,
y_min = moreores.tin_min_depth,
y_max = moreores.tin_max_depth
},
tools = {},
},
mithril = {
description = "Mithril",
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
@ -311,6 +305,20 @@ local oredefs = {
}
}
if not default_tin then
oredefs.tin = {
description = "Tin",
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
oredef = {clust_scarcity = moreores.tin_chunk_size * moreores.tin_chunk_size * moreores.tin_chunk_size,
clust_num_ores = moreores.tin_ore_per_chunk,
clust_size = moreores.tin_chunk_size,
y_min = moreores.tin_min_depth,
y_max = moreores.tin_max_depth
},
tools = {},
}
end
for orename,def in pairs(oredefs) do
add_ore(modname, def.description, orename, def)
end
@ -325,16 +333,23 @@ minetest.register_craft({
}
})
-- Bronze has some special cases, because it is made from copper and tin:
minetest.register_craft( {
type = "shapeless",
output = "default:bronze_ingot 3",
recipe = {
"moreores:tin_ingot",
"default:copper_ingot",
"default:copper_ingot",
}
})
if default_tin then
minetest.register_alias("moreores:mineral_tin", "default:stone_with_tin")
minetest.register_alias("moreores:tin_lump", "default:tin_lump")
minetest.register_alias("moreores:tin_ingot", "default:tin_ingot")
minetest.register_alias("moreores:tin_block", "default:tinblock")
else
-- Bronze has some special cases, because it is made from copper and tin:
minetest.register_craft( {
type = "shapeless",
output = "default:bronze_ingot 3",
recipe = {
"moreores:tin_ingot",
"default:copper_ingot",
"default:copper_ingot",
}
})
end
-- Unique node:
minetest.register_node("moreores:copper_rail", {

View File

@ -5,20 +5,22 @@ Copyright (c) 2011-2017 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
mg.register_ore({
name = "moreores:mineral_tin",
wherein = "default:stone",
seeddiff = 8,
maxvdistance = 10.5,
maxheight = 8,
seglenghtn = 15,
seglenghtdev = 6,
segincln = 0,
segincldev = 0.6,
turnangle = 57,
forkturnangle = 57,
numperblock = 2
})
if not minetest.registered_items["default:tin_ingot"] then
mg.register_ore({
name = "moreores:mineral_tin",
wherein = "default:stone",
seeddiff = 8,
maxvdistance = 10.5,
maxheight = 8,
seglenghtn = 15,
seglenghtdev = 6,
segincln = 0,
segincldev = 0.6,
turnangle = 57,
forkturnangle = 57,
numperblock = 2
})
end
mg.register_ore({
name = "moreores:mineral_silver",

Some files were not shown because too many files have changed in this diff Show More