first commit
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.blend1
|
||||
18
LICENSE.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
MIT Copyright 2021 GreenXenith
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
53
README.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Waffles
|
||||
_"And in the mornin', I'm makin' waffles!" - Donkey, Shrek 2001_
|
||||
|
||||

|
||||
|
||||
### _Waffles for Dummies:_
|
||||
1. Obtain a waffle maker.
|
||||
2. Place the waffle maker.
|
||||
3. Obtain batter.
|
||||
4. Open the waffle maker.
|
||||
5. Place some batter in the waffle maker.
|
||||
6. Close the waffle maker.
|
||||
7. Wait for the waffle maker to open.
|
||||
8. Take the cooked waffle.
|
||||
9. Consume the cooked waffle.
|
||||
10. Repeat from step 5.
|
||||
|
||||
### Recipes
|
||||
_All listed items are configurable. See [Configuration](#configuration)_.
|
||||
|
||||
`waffles:waffle_maker`:
|
||||
```
|
||||
C = casing (default:tin_ingot)
|
||||
W = wiring (default:steel_ingot)
|
||||
H = heating (default:copper_ingot)
|
||||
|
||||
+-+-+-+
|
||||
|C|C|C|
|
||||
+-+-+-+
|
||||
|W| |W|
|
||||
+-+-+-+
|
||||
|C|H|C|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`waffles:waffle_batter_3`:
|
||||
```
|
||||
(Shapeless)
|
||||
farming:flour, farming:flour, bucket:bucket_water
|
||||
|
||||
This recipe is completely configurable.
|
||||
```
|
||||
|
||||
`waffles:waffle_stack`: 8 `waffles:waffle` (Shapeless)
|
||||
|
||||
`waffles:waffle_stack_short`: 4 `waffles:waffle` (Shapeless)
|
||||
|
||||
### Configuration
|
||||
|
||||
* `waffles.craftitem_maker_casing`: Waffle maker casing craftitem.
|
||||
* `waffles.craftitem_maker_wiring`: Waffle maker wiring craftitem.
|
||||
* `waffles.craftitem_maker_heating`: Waffle maker heating craftitem.
|
||||
* `waffles.waffle_batter_recipe`: Waffle batter recipe craftitems. See `settingtypes.txt`.
|
||||
20
init.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
local MODNAME = minetest.get_current_modname()
|
||||
local MODPATH = minetest.get_modpath(MODNAME)
|
||||
local function include(filename, ...) return assert(loadfile(MODPATH .. "/" .. filename))(...) end
|
||||
|
||||
local waffles = {}
|
||||
|
||||
-- Return default sounds if available
|
||||
waffles.default_sounds = function(name)
|
||||
if minetest.global_exists("default") and default[name] then return default[name]() end
|
||||
end
|
||||
|
||||
waffles.setting_or = function(name, default)
|
||||
local set = minetest.settings:get(MODNAME .. "." .. name)
|
||||
return set ~= "" and set or default
|
||||
end
|
||||
|
||||
include("waffle.lua", waffles)
|
||||
include("maker.lua", waffles)
|
||||
|
||||
include("legacy.lua")
|
||||
28
legacy.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
local MODNAME = minetest.get_current_modname()
|
||||
|
||||
local aliases = {
|
||||
["wafflemaker"] = "waffle_maker",
|
||||
["wafflemaker_open_empty"] = "waffle_maker_open",
|
||||
["wafflemaker_open_full"] = "waffle_maker_open",
|
||||
["wafflemaker_closed_full"] = "waffle_maker",
|
||||
["wafflemaker_open_done"] = "waffle_maker_open",
|
||||
["large_waffle"] = "waffle",
|
||||
["small_waffle"] = "waffle_quarter",
|
||||
["toaster"] = "waffle_maker",
|
||||
["breadslice"] = "waffle_quarter",
|
||||
["toast"] = "waffle_quarter",
|
||||
["toaster_with_breadslice"] = "waffle_maker",
|
||||
["toaster_toasting_breadslice"] = "waffle_maker",
|
||||
["toaster_with_toast"] = "waffle_maker",
|
||||
["toaster_waffle"] = "waffle_quarter",
|
||||
["toaster_waffle_pack"] = "waffle",
|
||||
["toaster_waffle_pack_4"] = "waffle",
|
||||
["toaster_waffle_pack_2"] = "waffle_quarter",
|
||||
["toaster_with_waffle"] = "waffle_maker",
|
||||
["toaster_toasting_waffle"] = "waffle_maker",
|
||||
["toaster_with_toasted_waffle"] = "waffle_maker",
|
||||
}
|
||||
|
||||
for old, new in pairs(aliases) do
|
||||
minetest.register_alias(MODNAME .. ":" .. old, MODNAME .. ":" .. new)
|
||||
end
|
||||
13
locale/de.tr
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# waffles
|
||||
# German Translation
|
||||
|
||||
Waffle Maker=Waffeleisen
|
||||
Waffle Maker (Open)=Waffeleisen (geöffnet)
|
||||
|
||||
Waffle=Waffel
|
||||
Quarter of Waffle=Waffelviertel
|
||||
|
||||
Stack of Waffles=Waffelstapel
|
||||
Short Stack of Waffles=Kleiner Waffelstapel
|
||||
|
||||
Waffle Batter=Waffelteig
|
||||
13
locale/fr.tr
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# waffles
|
||||
# French Translation
|
||||
|
||||
Waffle Maker=Gaufrier
|
||||
Waffle Maker (Open)=Gaufrier (Ouverte)
|
||||
|
||||
Waffle=Gaufre
|
||||
Quarter of Waffle=Quart de Gaufre
|
||||
|
||||
Stack of Waffles=Pile de Gaufres
|
||||
Short Stack of Waffles=Petite Pile de Gaufres
|
||||
|
||||
Waffle Batter=Pâte à gaufre
|
||||
13
locale/ms.tr
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# waffles
|
||||
# Malay Translation
|
||||
|
||||
Waffle Maker=Pembakar Wafel
|
||||
Waffle Maker (Open)=Pembakar Wafel (Terbuka)
|
||||
|
||||
Waffle=Wafel
|
||||
Quarter of Waffle=Suku Wafel
|
||||
|
||||
Stack of Waffles=Timbunan Wafel
|
||||
Short Stack of Waffles=Timbunan Wafel Pendek
|
||||
|
||||
Waffle Batter=Bater Wafel
|
||||
13
locale/template.tr
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# waffles
|
||||
# <Language> Translation
|
||||
|
||||
Waffle Maker=
|
||||
Waffle Maker (Open)=
|
||||
|
||||
Waffle=
|
||||
Quarter of Waffle=
|
||||
|
||||
Stack of Waffles=
|
||||
Short Stack of Waffles=
|
||||
|
||||
Waffle Batter=
|
||||
216
maker.lua
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
local waffles = ...
|
||||
|
||||
local COOK_TIME = 6
|
||||
local MODNAME = minetest.get_current_modname()
|
||||
local S = minetest.get_translator(MODNAME)
|
||||
|
||||
-- Batter visual
|
||||
local batters = {}
|
||||
minetest.register_entity(MODNAME .. ":batter", {
|
||||
visual = "mesh",
|
||||
mesh = "waffles_waffle.obj",
|
||||
textures = {"waffles_waffle_batter.png"},
|
||||
visual_size = vector.new(10, 10, 10),
|
||||
pointable = false,
|
||||
physical = false,
|
||||
on_activate = function(self, parent)
|
||||
if parent == "" then return self.object:remove() end
|
||||
self._parent = minetest.string_to_pos(parent)
|
||||
|
||||
-- Interpolate between batter and waffle
|
||||
local cooked = minetest.get_meta(self._parent):get_float("cooked")
|
||||
self.object:set_properties({textures = {
|
||||
"waffles_waffle_batter.png^(waffles_waffle.png^[opacity:" .. cooked * 255 .. ")"
|
||||
}})
|
||||
|
||||
self.object:set_pos(vector.add(self._parent, {x = 0, y = 4 / 16, z = 0}))
|
||||
self.object:set_armor_groups({immortal = 1})
|
||||
|
||||
batters[minetest.hash_node_position(self._parent)] = self
|
||||
end,
|
||||
get_staticdata = function(self)
|
||||
return minetest.pos_to_string(self._parent)
|
||||
end,
|
||||
})
|
||||
|
||||
local function remove_batter(pos)
|
||||
local hash = minetest.hash_node_position(pos)
|
||||
if batters[hash] then
|
||||
batters[hash].object:remove()
|
||||
batters[hash] = nil
|
||||
end
|
||||
end
|
||||
|
||||
-- Waffle maker base definition
|
||||
local def_base = {
|
||||
description = S("Waffle Maker"),
|
||||
drawtype = "mesh",
|
||||
tiles = {"waffles_waffle_maker.png"},
|
||||
use_texture_alpha = "clip",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy = 3, oddly_breakable_by_hand = 1},
|
||||
sounds = waffles.default_sounds("node_sound_metal_defaults"),
|
||||
on_construct = function(pos)
|
||||
minetest.get_meta(pos):set_float("cooked", -1)
|
||||
end,
|
||||
on_rightclick = function(pos, node, _, stack)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local cooked = meta:get_float("cooked")
|
||||
|
||||
local open = node.name:sub(-4) == "open"
|
||||
local battering = stack:get_name():match(MODNAME .. ":waffle_batter$")
|
||||
|
||||
-- Add batter if open and empty
|
||||
if open and battering and cooked < 0 then
|
||||
cooked = 0
|
||||
meta:set_float("cooked", cooked)
|
||||
stack:take_item()
|
||||
end
|
||||
|
||||
-- Toggle as long as not placing batter on open maker
|
||||
if not (open and battering) then
|
||||
minetest.swap_node(pos, {
|
||||
name = node.name:sub(1, open and -6 or -1) .. (open and "" or "_open"),
|
||||
param2 = node.param2,
|
||||
})
|
||||
|
||||
open = not open
|
||||
end
|
||||
|
||||
-- Handle batter
|
||||
if open then
|
||||
if cooked > -1 and not batters[minetest.hash_node_position(pos)] then
|
||||
minetest.add_entity(pos, MODNAME .. ":batter", minetest.pos_to_string(pos))
|
||||
end
|
||||
else
|
||||
remove_batter(pos)
|
||||
minetest.get_node_timer(pos):start(0.5)
|
||||
end
|
||||
|
||||
return stack
|
||||
end,
|
||||
on_punch = function(pos, node, puncher, ...)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local cooked = meta:get_float("cooked")
|
||||
|
||||
if cooked > -1 then
|
||||
local inv = puncher:get_inventory()
|
||||
|
||||
if cooked <= 0.2 or cooked >= 0.8 then
|
||||
local stack = ItemStack(MODNAME .. (cooked <= 0.2 and ":waffle_batter" or ":waffle"))
|
||||
|
||||
if inv:room_for_item("main", stack) then
|
||||
inv:add_item("main", stack)
|
||||
cooked = -1
|
||||
end
|
||||
end
|
||||
|
||||
if cooked < 0 then remove_batter(pos) end
|
||||
meta:set_float("cooked", cooked)
|
||||
end
|
||||
|
||||
return minetest.node_punch(pos, node, puncher, ...)
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
if minetest.get_node(pos).name:sub(-4) == "open" then return end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local cooked = meta:get_float("cooked")
|
||||
|
||||
if cooked > -1 and cooked < 1 then
|
||||
meta:set_float("cooked", math.min(cooked + 0.5 / COOK_TIME, 1))
|
||||
minetest.get_node_timer(pos):start(0.5)
|
||||
|
||||
if meta:get_float("cooked") == 1 then
|
||||
minetest.add_particlespawner({
|
||||
amount = math.random(6, 10),
|
||||
time = 3,
|
||||
|
||||
minpos = vector.add(pos, {x = -0.5, y = 0, z = -0.5}),
|
||||
maxpos = vector.add(pos, {x = 0.5, y = 0, z = 0.5}),
|
||||
|
||||
minvel = {x = 0, y = 0.5, z = 0},
|
||||
maxvel = {x = 0, y = 0.5, z = 0},
|
||||
|
||||
minacc = {x = 0, y = 0, z = 0},
|
||||
maxacc = {x = 0, y = 0, z = 0},
|
||||
|
||||
minexptime = 2,
|
||||
maxexptime = 2,
|
||||
|
||||
minsize = 2,
|
||||
maxsize = 6,
|
||||
|
||||
texture = "waffles_steam.png",
|
||||
})
|
||||
|
||||
minetest.registered_nodes[MODNAME .. ":waffle_maker"].on_rightclick(pos, minetest.get_node(pos), nil, ItemStack(""))
|
||||
end
|
||||
end
|
||||
end,
|
||||
can_dig = function(pos)
|
||||
return minetest.get_meta(pos):get_float("cooked") == -1
|
||||
end,
|
||||
on_destruct = remove_batter,
|
||||
}
|
||||
|
||||
minetest.register_lbm({
|
||||
label = "Start waffle maker timers",
|
||||
name = MODNAME .. ":waffle_timers",
|
||||
nodnames = {MODNAME .. ":waffle_maker"},
|
||||
run_at_every_load = true,
|
||||
action = function(pos)
|
||||
minetest.get_node_timer(pos):start(0.5)
|
||||
end
|
||||
})
|
||||
|
||||
-- Open and closed defs
|
||||
local def_closed = table.copy(def_base)
|
||||
local box_closed = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
}
|
||||
|
||||
def_closed.selection_box = box_closed
|
||||
def_closed.collision_box = box_closed
|
||||
|
||||
def_closed.mesh = "waffles_waffle_maker_closed.obj"
|
||||
|
||||
local def_open = table.copy(def_base)
|
||||
local box_open = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
|
||||
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
|
||||
},
|
||||
}
|
||||
|
||||
def_open.selection_box = box_open
|
||||
def_open.collision_box = box_open
|
||||
|
||||
def_open.mesh = "waffles_waffle_maker_open.obj"
|
||||
|
||||
def_open.description = S("Waffle Maker (Open)")
|
||||
def_open.drop = MODNAME .. ":waffle_maker"
|
||||
def_open.groups.not_in_creative_inventory = 1
|
||||
|
||||
minetest.register_node(MODNAME .. ":waffle_maker", def_closed)
|
||||
minetest.register_node(MODNAME .. ":waffle_maker_open", def_open)
|
||||
|
||||
-- Crafting recipe
|
||||
local craftitems = {
|
||||
casing = waffles.setting_or("crafitem_maker_casing", "default:tin_ingot"),
|
||||
wiring = waffles.setting_or("crafitem_maker_wiring", "default:steel_ingot"),
|
||||
heating = waffles.setting_or("crafitem_maker_heating", "default:copper_ingot"),
|
||||
}
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle_maker",
|
||||
recipe = {
|
||||
{craftitems.casing, craftitems.casing, craftitems.casing},
|
||||
{craftitems.wiring, "", craftitems.wiring},
|
||||
{craftitems.casing, craftitems.heating, craftitems.casing},
|
||||
}
|
||||
})
|
||||
6
mod.conf
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
name = waffles
|
||||
description = Waffles. Thats it.
|
||||
optional_depends = default
|
||||
release = 16795
|
||||
author = GreenXenith
|
||||
title = Waffles
|
||||
BIN
models/waffles.blend
Normal file
44
models/waffles_waffle.obj
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Blender v2.93.0 OBJ File: 'waffles.blend'
|
||||
# www.blender.org
|
||||
o waffle_Cube.007
|
||||
v -0.312500 -0.500000 0.312500
|
||||
v -0.312500 -0.437500 0.312500
|
||||
v -0.312500 -0.500000 -0.312500
|
||||
v -0.312500 -0.437500 -0.312500
|
||||
v 0.312500 -0.500000 0.312500
|
||||
v 0.312500 -0.437500 0.312500
|
||||
v 0.312500 -0.500000 -0.312500
|
||||
v 0.312500 -0.437500 -0.312500
|
||||
vt 0.625000 1.000000
|
||||
vt 0.562500 1.000000
|
||||
vt 0.562500 0.375000
|
||||
vt 0.625000 0.375000
|
||||
vt 0.625000 0.437500
|
||||
vt -0.000000 0.437500
|
||||
vt 0.000000 0.375000
|
||||
vt 0.062500 0.375000
|
||||
vt 0.062500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.937500
|
||||
vt 0.625000 0.937500
|
||||
vt 0.625000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.375000
|
||||
vt 0.625000 0.375000
|
||||
vt -0.000000 0.375000
|
||||
vt 0.625000 0.375000
|
||||
vt 0.625000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/5/2 8/6/2 7/7/2
|
||||
f 7/7/3 8/8/3 6/9/3 5/10/3
|
||||
f 5/10/4 6/11/4 2/12/4 1/1/4
|
||||
f 3/13/5 7/14/5 5/15/5 1/16/5
|
||||
f 8/17/6 4/18/6 2/19/6 6/20/6
|
||||
102
models/waffles_waffle_maker_closed.obj
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# Blender v2.93.0 OBJ File: 'waffles.blend'
|
||||
# www.blender.org
|
||||
o waffle_iron_closed_Cube.006
|
||||
v -0.375000 -0.500000 0.375000
|
||||
v -0.375000 -0.250000 0.375000
|
||||
v -0.375000 -0.500000 -0.375000
|
||||
v -0.375000 -0.250000 -0.375000
|
||||
v 0.375000 -0.500000 0.375000
|
||||
v 0.375000 -0.250000 0.375000
|
||||
v 0.375000 -0.500000 -0.375000
|
||||
v 0.375000 -0.250000 -0.375000
|
||||
v -0.375000 -0.437500 0.375000
|
||||
v -0.375000 -0.437500 -0.375000
|
||||
v 0.375000 -0.437500 0.375000
|
||||
v 0.375000 -0.437500 -0.375000
|
||||
v -0.375000 -0.125000 0.375000
|
||||
v -0.375000 -0.125000 -0.375000
|
||||
v -0.375000 -0.250000 0.375000
|
||||
v -0.375000 -0.250000 -0.375000
|
||||
v 0.375000 -0.125000 0.375000
|
||||
v 0.375000 -0.125000 -0.375000
|
||||
v 0.375000 -0.250000 0.375000
|
||||
v 0.375000 -0.250000 -0.375000
|
||||
v -0.062500 -0.437500 -0.375000
|
||||
v -0.062500 -0.312500 -0.375000
|
||||
v -0.062500 -0.437500 -0.437500
|
||||
v -0.062500 -0.312500 -0.437500
|
||||
v 0.062500 -0.437500 -0.375000
|
||||
v 0.062500 -0.312500 -0.375000
|
||||
v 0.062500 -0.437500 -0.437500
|
||||
v 0.062500 -0.312500 -0.437500
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.750000 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.250000 -0.000000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.250000 -0.000000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.833333 0.812500
|
||||
vt 0.833333 0.937500
|
||||
vt 0.812500 0.937500
|
||||
vt 0.812500 0.812500
|
||||
vt 0.770833 0.937500
|
||||
vt 0.770833 0.812500
|
||||
vt 0.750000 0.937500
|
||||
vt 0.750000 0.812500
|
||||
vt 0.770833 0.750000
|
||||
vt 0.812500 0.750000
|
||||
vt 0.812500 1.000000
|
||||
vt 0.770833 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/3/2 8/5/2 7/6/2
|
||||
f 7/7/3 8/8/3 6/9/3 5/10/3
|
||||
f 5/11/4 6/12/4 2/2/4 1/1/4
|
||||
f 8/5/5 4/3/5 2/13/5 6/14/5
|
||||
f 10/15/6 12/16/6 11/17/6 9/18/6
|
||||
f 13/19/1 14/20/1 16/21/1 15/22/1
|
||||
f 19/23/3 20/24/3 18/25/3 17/26/3
|
||||
f 17/27/5 18/28/5 14/29/5 13/30/5
|
||||
f 15/31/4 19/32/4 17/33/4 13/34/4
|
||||
f 20/35/2 16/36/2 14/29/2 18/28/2
|
||||
f 21/37/1 22/38/1 24/39/1 23/40/1
|
||||
f 23/40/2 24/39/2 28/41/2 27/42/2
|
||||
f 27/42/3 28/41/3 26/43/3 25/44/3
|
||||
f 23/40/6 27/42/6 25/45/6 21/46/6
|
||||
f 28/41/5 24/39/5 22/47/5 26/48/5
|
||||
109
models/waffles_waffle_maker_open.obj
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# Blender v2.93.0 OBJ File: 'waffles.blend'
|
||||
# www.blender.org
|
||||
o waffle_iron_open_Cube.003
|
||||
v -0.375000 -0.500000 0.375000
|
||||
v -0.375000 -0.250000 0.375000
|
||||
v -0.375000 -0.500000 -0.375000
|
||||
v -0.375000 -0.250000 -0.375000
|
||||
v 0.375000 -0.500000 0.375000
|
||||
v 0.375000 -0.250000 0.375000
|
||||
v 0.375000 -0.500000 -0.375000
|
||||
v 0.375000 -0.250000 -0.375000
|
||||
v -0.375000 -0.437500 0.375000
|
||||
v -0.375000 -0.437500 -0.375000
|
||||
v 0.375000 -0.437500 0.375000
|
||||
v 0.375000 -0.437500 -0.375000
|
||||
v -0.375000 -0.250000 0.500000
|
||||
v -0.375000 0.500000 0.500000
|
||||
v -0.375000 -0.250000 0.375000
|
||||
v -0.375000 0.500000 0.375000
|
||||
v 0.375000 -0.250000 0.500000
|
||||
v 0.375000 0.500000 0.500000
|
||||
v 0.375000 -0.250000 0.375000
|
||||
v 0.375000 0.500000 0.375000
|
||||
v -0.062500 -0.437500 -0.375000
|
||||
v -0.062500 -0.312500 -0.375000
|
||||
v -0.062500 -0.437500 -0.437500
|
||||
v -0.062500 -0.312500 -0.437500
|
||||
v 0.062500 -0.437500 -0.375000
|
||||
v 0.062500 -0.312500 -0.375000
|
||||
v 0.062500 -0.437500 -0.437500
|
||||
v 0.062500 -0.312500 -0.437500
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.750000 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.250000 -0.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.250000 -0.000000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.833333 0.812500
|
||||
vt 0.833333 0.937500
|
||||
vt 0.812500 0.937500
|
||||
vt 0.812500 0.812500
|
||||
vt 0.770833 0.937500
|
||||
vt 0.770833 0.812500
|
||||
vt 0.750000 0.937500
|
||||
vt 0.750000 0.812500
|
||||
vt 0.770833 0.750000
|
||||
vt 0.812500 0.750000
|
||||
vt 0.812500 1.000000
|
||||
vt 0.770833 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/3/2 8/5/2 7/6/2
|
||||
f 7/7/3 8/8/3 6/9/3 5/10/3
|
||||
f 5/11/4 6/12/4 2/2/4 1/1/4
|
||||
f 8/5/5 4/3/5 2/13/5 6/14/5
|
||||
f 10/15/6 12/16/6 11/17/6 9/18/6
|
||||
f 13/19/1 14/20/1 16/21/1 15/22/1
|
||||
f 15/23/2 16/24/2 20/25/2 19/26/2
|
||||
f 19/27/3 20/28/3 18/29/3 17/30/3
|
||||
f 17/31/4 18/32/4 14/33/4 13/34/4
|
||||
f 15/35/6 19/36/6 17/37/6 13/38/6
|
||||
f 20/39/5 16/40/5 14/41/5 18/42/5
|
||||
f 21/43/1 22/44/1 24/45/1 23/46/1
|
||||
f 23/46/2 24/45/2 28/47/2 27/48/2
|
||||
f 27/48/3 28/47/3 26/49/3 25/50/3
|
||||
f 23/46/6 27/48/6 25/51/6 21/52/6
|
||||
f 28/47/5 24/45/5 22/53/5 26/54/5
|
||||
BIN
screenshot.png
Normal file
|
After Width: | Height: | Size: 255 KiB |
11
settingtypes.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Crafitem used as waffle maker casing.
|
||||
waffles.craftitem_maker_casing (Waffle maker casing craftitem) string default:tin_ingot
|
||||
|
||||
# Crafitem used as waffle maker wiring.
|
||||
waffles.craftitem_maker_wiring (Waffle maker wiring craftitem) string default:steel_ingot
|
||||
|
||||
# Crafitem used as waffle maker heating.
|
||||
waffles.craftitem_maker_heating (Waffle maker heating craftitem) string default:copper_ingot
|
||||
|
||||
# Space/comma-separated list of craftitems used to make waffle batter. `item=replacement` defines replacements.
|
||||
waffles.waffle_batter_recipe (Waffle batter recipe craftitems) string farming:flour farming:flour bucket:bucket_water=bucket:bucket_empty
|
||||
BIN
textures/waffles_steam.png
Normal file
|
After Width: | Height: | Size: 313 B |
BIN
textures/waffles_waffle.png
Normal file
|
After Width: | Height: | Size: 511 B |
BIN
textures/waffles_waffle_batter.png
Normal file
|
After Width: | Height: | Size: 352 B |
BIN
textures/waffles_waffle_batter_inv.png
Normal file
|
After Width: | Height: | Size: 406 B |
BIN
textures/waffles_waffle_block_side.png
Normal file
|
After Width: | Height: | Size: 193 B |
BIN
textures/waffles_waffle_block_top.png
Normal file
|
After Width: | Height: | Size: 683 B |
BIN
textures/waffles_waffle_inv.png
Normal file
|
After Width: | Height: | Size: 835 B |
BIN
textures/waffles_waffle_maker.png
Normal file
|
After Width: | Height: | Size: 290 B |
BIN
textures/waffles_waffle_quarter.png
Normal file
|
After Width: | Height: | Size: 785 B |
115
waffle.lua
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
local waffles = ...
|
||||
|
||||
local MODNAME = minetest.get_current_modname()
|
||||
local S = minetest.get_translator(MODNAME)
|
||||
|
||||
-- Waffle
|
||||
local box_waffle = {
|
||||
type = "fixed",
|
||||
fixed = {-5 / 16, -8 / 16, -5 / 16, 5 / 16, - 7 / 16, 5 / 16},
|
||||
}
|
||||
|
||||
minetest.register_node(MODNAME .. ":waffle", {
|
||||
description = S("Waffle"),
|
||||
drawtype = "mesh",
|
||||
mesh = "waffles_waffle.obj",
|
||||
tiles = {"waffles_waffle.png"},
|
||||
use_texture_alpha = "clip",
|
||||
inventory_image = "waffles_waffle_inv.png",
|
||||
wield_image = "waffles_waffle_inv.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy = 3, oddly_breakable_by_hand = 1},
|
||||
selection_box = box_waffle,
|
||||
collision_box = box_waffle,
|
||||
on_use = minetest.item_eat(8),
|
||||
on_place = minetest.rotate_and_place,
|
||||
})
|
||||
|
||||
minetest.register_craftitem(MODNAME .. ":waffle_quarter", {
|
||||
description = S("Quarter of Waffle"),
|
||||
inventory_image = "waffles_waffle_quarter.png",
|
||||
on_use = minetest.item_eat(2)
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle_quarter 4",
|
||||
type = "shapeless",
|
||||
recipe = {MODNAME .. ":waffle"},
|
||||
})
|
||||
|
||||
-- Waffle stacks
|
||||
minetest.register_node(MODNAME .. ":waffle_stack", {
|
||||
description = S("Stack of Waffles"),
|
||||
tiles = {"waffles_waffle_block_top.png", "waffles_waffle_block_top.png", "waffles_waffle_block_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy = 3, oddly_breakable_by_hand = 1},
|
||||
on_place = minetest.rotate_and_place,
|
||||
})
|
||||
|
||||
minetest.register_node(MODNAME .. ":waffle_stack_short", {
|
||||
description = S("Short Stack of Waffles"),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
tiles = {"waffles_waffle_block_top.png", "waffles_waffle_block_top.png", "waffles_waffle_block_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
groups = {snappy = 3, oddly_breakable_by_hand = 1},
|
||||
on_place = minetest.rotate_and_place,
|
||||
})
|
||||
|
||||
local craftitem = MODNAME .. ":waffle"
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle_stack",
|
||||
type = "shapeless",
|
||||
recipe = {craftitem, craftitem, craftitem, craftitem, craftitem, craftitem, craftitem, craftitem},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle_stack_short",
|
||||
type = "shapeless",
|
||||
recipe = {craftitem, craftitem, craftitem, craftitem},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle 8",
|
||||
type = "shapeless",
|
||||
recipe = {MODNAME .. ":waffle_stack"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle 4",
|
||||
type = "shapeless",
|
||||
recipe = {MODNAME .. ":waffle_stack_short"}
|
||||
})
|
||||
|
||||
-- Batter
|
||||
minetest.register_craftitem(MODNAME .. ":waffle_batter", {
|
||||
description = S("Waffle Batter"),
|
||||
inventory_image = "waffles_waffle_batter_inv.png",
|
||||
use_texture_alpha = true,
|
||||
})
|
||||
|
||||
local craftitems = waffles.setting_or("waffle_batter_recipe", "farming:flour farming:flour bucket:bucket_water=bucket:bucket_empty")
|
||||
local recipe = {}
|
||||
local replacements = {}
|
||||
|
||||
for _, item in pairs(craftitems:split("[, ]", false, -1, true)) do
|
||||
local set = item:split("=")
|
||||
table.insert(recipe, set[1])
|
||||
|
||||
if set[2] then
|
||||
table.insert(replacements, {set[1], set[2]})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = MODNAME .. ":waffle_batter 3",
|
||||
type = "shapeless",
|
||||
recipe = recipe,
|
||||
replacements = #replacements > 0 and replacements or nil,
|
||||
})
|
||||