big_update

This commit is contained in:
Milan Meduna 2020-10-26 17:38:53 +01:00
parent aeb13365d0
commit 291edb4190
8174 changed files with 298433 additions and 9113 deletions

6
git-push Executable file
View file

@ -0,0 +1,6 @@
#!/bin/bash
mv -f config-file ../config-file
git add .
git commit -m "$1"
git push
mv -f ../config-file config-file

View file

@ -11,13 +11,11 @@ git clone --depth 1 --branch master https://github.com/minetest-mods/mywalls.git
git clone --depth 1 --branch master https://github.com/minetest-mods/xdecor.git
git clone --depth 1 --branch master https://github.com/minetest-mods/vehicle_mash.git
# for lib_mount exists branch called rotation_fix, lib_mount is needed for vehicle_mash
git clone --depth 1 --branch master https://github.com/minetest-mods/lib_mount.git
git clone --depth 1 --branch master https://github.com/Panquesito7/lib_mount.git
git clone --depth 1 --branch master https://github.com/minetest-mods/workbench.git
git clone --depth 1 --branch master https://github.com/minetest-mods/ts_furniture.git
git clone --depth 1 --branch master https://github.com/minetest-mods/playeranim.git
git clone --depth 1 --branch master https://github.com/minetest-mods/skinsdb.git
git clone --depth 1 --branch master https://github.com/minetest-mods/castle_masonry.git
git clone --depth 1 --branch master https://github.com/minetest-mods/mob-engine.git
git clone --depth 1 --branch master https://github.com/minetest-mods/letters.git
git clone --depth 1 --branch master https://github.com/minetest-mods/ts_doors.git
git clone --depth 1 --branch master https://github.com/minetest-mods/trash_can.git
@ -25,7 +23,6 @@ git clone --depth 1 --branch master https://github.com/minetest-mods/throwing_ar
git clone --depth 1 --branch master https://github.com/minetest-mods/throwing.git
git clone --depth 1 --branch master https://github.com/minetest-mods/stained_glass.git
git clone --depth 1 --branch master https://github.com/minetest-mods/xban2.git
git clone --depth 1 --branch master https://github.com/minetest-mods/ropes.git
git clone --depth 1 --branch master https://github.com/minetest-mods/drinks.git
git clone --depth 1 --branch master https://github.com/minetest-mods/jukebox.git
git clone --depth 1 --branch master https://github.com/minetest-mods/carpets.git
@ -33,7 +30,6 @@ git clone --depth 1 --branch master https://github.com/minetest-mods/chat2.git
git clone --depth 1 --branch master https://github.com/minetest-mods/mymillwork.git
git clone --depth 1 --branch master https://github.com/minetest-mods/signs_api.git
git clone --depth 1 --branch master https://github.com/minetest-mods/crops.git
git clone --depth 1 --branch master https://github.com/minetest-mods/computer.git
git clone --depth 1 --branch master https://github.com/minetest-mods/mtfoods.git
git clone --depth 1 --branch master https://github.com/minetest-mods/mysheetmetal.git
git clone --depth 1 --branch master https://github.com/minetest-mods/ts_workshop.git
@ -49,14 +45,65 @@ git clone --depth 1 --branch master https://github.com/minetest-mods/mymasonhamm
git clone --depth 1 --branch master https://github.com/minetest-mods/mywoodslopes.git
git clone --depth 1 --branch master https://github.com/minetest-mods/display_api.git
git clone --depth 1 --branch master https://github.com/minetest-mods/font_api.git
git clone --depth 1 --branch master https://github.com/minetest-mods/trees_lib.git
git clone --depth 1 --branch master https://github.com/minetest-mods/intllib.git
git clone --depth 1 --branch master https://github.com/minetest-mods/more_chests.git
git clone --depth 1 --branch master https://github.com/minetest-mods/flowerpot.git
git clone --depth 1 --branch master https://github.com/minetest-mods/cloud_items.git
git clone --depth 1 --branch master https://github.com/minetest-mods/compost.git
git clone --depth 1 --branch master https://github.com/minetest-mods/death_compass.git
git clone --depth 1 --branch master https://github.com/minetest-mods/smartfs.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/unifieddyes.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/basic_materials.git
git clone --depth 1 --branch master https://github.com/minetest-mods/trees_lib.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/biome_lib.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/moretrees.git
git clone --depth 1 --branch master https://github.com/minetest-mods/intllib.git
git clone --depth 1 --branch master https://github.com/bas080/vines.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/homedecor_modpack.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/signs_lib.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/currency.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/plantlife_modpack.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/new_campfire.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/coloredwood.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/basic_signs.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/roads.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/blox.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/plasticbox.git
git clone --depth 1 --branch master https://gitlab.com/VanessaE/charcoal.git
git clone --depth 1 --branch master https://github.com/Sokomine/windmill.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/farming.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/protector.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/playerplus.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_npc.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_redo.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_water.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_monster.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_animal.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mob_horse.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/bows.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/builtin_item.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/bonemeal.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/stamina.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/wine.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/bees.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/wool.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/regrow.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/ambience.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/bakedclay.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/stairs.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/anvils.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/carts.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/doors.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/pie.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/castle.git
git clone --depth 1 --branch master https://notabug.org/TenPlus1/mobs_sky.git
git clone --depth 1 --branch master https://github.com/Uberi/Minetest-WorldEdit.git
git clone --depth 1 --branch master https://github.com/minetest-mods/realchess.git
git clone --depth 1 --branch master https://github.com/Grizzly-Adam/BBQ.git
git clone --depth 1 --branch master git://cheapiesystems.com/mail
rm */.git -rf
rm */.gitignore -f
rm */.gitattributes -f
rm */.github -rf
#update skins-db
cd skinsdb/updater
python3 update_skins.py

223
mods-list
View file

@ -1,64 +1,179 @@
load_mod_interact = false
load_mod_wieldview = true
load_mod_shields = true
load_mod_3d_armor_ui = true
load_mod_3d_armor = true
load_mod_3d_armor_sfinv = true
load_mod_3d_armor_ip = true
load_mod_3d_armor_stand = true
load_mod_unified_inventory = true
load_mod_xdecor = true
load_mod_xban2 = true
load_mod_workbench = true
load_mod_wool = true
load_mod_wine = true
load_mod_vehicle_mash = true
load_mod_unifieddyes = true
load_mod_unifiedbricks = true
load_mod_ts_workshop = true
load_mod_ts_paper = true
load_mod_moreores = true
load_mod_throwing_arrows = true
load_mod_drinks = true
load_mod_carpets = true
load_mod_enchanting = true
load_mod_ghost = true
load_mod_computer = true
load_mod_castle_masonry = true
load_mod_mymillwork = true
load_mod_stained_glass = true
load_mod_jukebox = true
load_mod_crops = true
load_mod_mysheetmetal = true
load_mod_mywoodslopes = true
load_mod_throwing = true
load_mod_letters = true
load_mod_lib_mount = true
load_mod_moreblocks = true
load_mod_chicken = true
load_mod_creatures = true
load_mod_oerrki = true
load_mod_mycorners = true
load_mod_zombie = true
load_mod_mtfoods = true
load_mod_chat2 = true
load_mod_mydeck = true
load_mod_mywalls = true
load_mod_mymasonhammer = true
load_mod_mypaths = true
load_mod_trash_can = true
load_mod_myroofs = true
load_mod_ropes = true
load_mod_playeranim = true
load_mod_signs_api = true
load_mod_sheep = true
load_mod_skinsdb = true
load_mod_stargate = true
load_mod_workbench = true
load_mod_unified_inventory = true
load_mod_ts_furniture = true
load_mod_ts_doors = true
load_mod_unifieddyes = true
load_mod_font_api = true
load_mod_display_api = true
load_mod_basic_materials = true
load_mod_trash_can = true
load_mod_throwing_arrows = true
load_mod_throwing = true
load_mod_stamina = true
load_mod_stairs = true
load_mod_stained_glass = true
load_mod_smartfs = true
load_mod_streetspoles = true
load_mod_streetsmod = true
load_mod_streetsconcrete = true
load_mod_streetlamps = true
load_mod_steelsupport = true
load_mod_roadsigns = true
load_mod_emergencyphone = true
load_mod_delineator = true
load_mod_constructionarea = true
load_mod_asphalt = true
load_mod_regrow = true
load_mod_realchess = true
load_mod_protector = true
load_mod_playerplus = true
load_mod_playeranim = true
load_mod_ts_workshop = true
load_mod_woodsoils = true
load_mod_trunks = true
load_mod_poisonivy = true
load_mod_ferns = true
load_mod_homedecor_books = true
load_mod_homedecor_bathroom = true
load_mod_homedecor_fences = true
load_mod_fake_fire = true
load_mod_mobs_turtles = true
load_mod_mobs_jellyfish = true
load_mod_homedecor_3d_extras = true
load_mod_homedecor_seating = true
load_mod_compost = true
load_mod_homedecor_foyer = true
load_mod_mydeck = true
load_mod_doors = true
load_mod_nature_classic = true
load_mod_mob_horse = true
load_mod_homedecor_pictures_and_paintings = true
load_mod_lavalamp = true
load_mod_mobs_monster = true
load_mod_currency = true
load_mod_cloud_items = true
load_mod_castle = true
load_mod_homedecor_wardrobe = true
load_mod_infrastructure = true
load_mod_3d_armor_sfinv = true
load_mod_dryplants = true
load_mod_3d_armor = true
load_mod_cavestuff = true
load_mod_bonemeal = true
load_mod_trees_lib = true
load_mod_biome_lib = true
load_mod_moretrees = true
load_mod_building_blocks = true
load_mod_streetsawards = true
load_mod_mypaths = true
load_mod_manholes = true
load_mod_asphaltstairs = true
load_mod_basic_materials = true
load_mod_bushes = true
load_mod_drinks = true
load_mod_3d_armor_ui = true
load_mod_enchanting = true
load_mod_shields = true
load_mod_3d_armor_ip = true
load_mod_homedecor_misc = true
load_mod_coloredwood = true
load_mod_chat2 = true
load_mod_mobs_fish = true
load_mod_windmill = true
load_mod_carpets = true
load_mod_streetshotfix = true
load_mod_moreores = true
load_mod_signs_lib = true
load_mod_flowers_plus = true
load_mod_worldedit_commands = true
load_mod_death_compass = true
load_mod_wieldview = true
load_mod_font_api = true
load_mod_mobs_sharks = true
load_mod_vines = true
load_mod_worldedit_gui = true
load_mod_display_api = true
load_mod_intllib = true
load_mod_blox = true
load_mod_homedecor_bedroom = true
load_mod_mywalls = true
load_mod_worldedit_brush = true
load_mod_carts = true
load_mod_homedecor_clocks = true
load_mod_mobs_bat = true
load_mod_mywoodslopes = true
load_mod_worldedit_shortcommands = true
load_mod_molehills = true
load_mod_moreblocks = true
load_mod_anvils = true
load_mod_homedecor_gastronomy = true
load_mod_bakedclay = true
load_mod_youngtrees = true
load_mod_biome_lib = true
load_mod_basic_signs = true
load_mod_lib_mount = true
load_mod_ambience = true
load_mod_bees = true
load_mod_homedecor_windows_and_treatments = true
load_mod_farming = true
load_mod_homedecor_furniture_medieval = true
load_mod_homedecor_common = true
load_mod_mobs_animal = true
load_mod_homedecor_doors_and_gates = true
load_mod_homedecor_electrical = true
load_mod_mobs_crocs = true
load_mod_junglegrass = true
load_mod_3d_armor_stand = true
load_mod_homedecor_exterior = true
load_mod_builtin_item = true
load_mod_homedecor_furniture = true
load_mod_labels = true
load_mod_homedecor_electronics = true
load_mod_homedecor_kitchen = true
load_mod_homedecor_lighting = true
load_mod_charcoal = true
load_mod_homedecor_roofing = true
load_mod_ts_paper = true
load_mod_signs_api = true
load_mod_homedecor_tables = true
load_mod_homedecor_trash_cans = true
load_mod_stargate = true
load_mod_homedecor_office = true
load_mod_homedecor_laundry = true
load_mod_inbox = true
load_mod_itemframes = true
load_mod_flowerpot = true
load_mod_mobs_npc = true
load_mod_plasmascreen = true
load_mod_jukebox = true
load_mod_trafficlight = true
load_mod_letters = true
load_mod_worldedit = true
load_mod_mail = true
load_mod_plasticbox = true
load_mod_mobs_birds = true
load_mod_mobs = true
load_mod_mobs_butterfly = true
load_mod_concretestairs = true
load_mod_crops = true
load_mod_more_chests = true
load_mod_homedecor_climate_control = true
load_mod_moretrees = true
load_mod_mtfoods = true
load_mod_mycorners = true
load_mod_bbq = true
load_mod_mymasonhammer = true
load_mod_computer = true
load_mod_mymillwork = true
load_mod_bows = true
load_mod_3dmushrooms = true
load_mod_skinsdb = true
load_mod_mysheetmetal = true
load_mod_new_campfire = true
load_mod_myroofs = true
load_mod_pie = true
load_mod_homedecor_cobweb = true
load_mod_along_shore = true
load_mod_bushes_classic = true

28
mods/BBQ/LICENSE Normal file
View file

@ -0,0 +1,28 @@
BBQ add-on for Minetest
by Grizzly Adam
Source code (lua):
(C) Grizzly Adam
LGPL-2.1+
All Textures:
(C) Grizzly Adam
CC-BY-SA-3.0
bbq_potato.png, bbq_tomato.png, and bbq_corn.png
(C) Auke Kok <sofar@foo-projects.org>
CC-BY-SA-3.0
Sounds:
- bbq_sizzle.ogg by Shanecantly *01-23-2018 EDITED TO SHORTEN & FADE OUT*
https://freesound.org/people/shaynecantly/sounds/131553/
CC-BY-3.0
- bbq_grill_brush.ogg by NSDAP *01-24-2018 EDITED TO SHORTEN*
https://freesound.org/people/NSDAP/sounds/397639/
CC-BY-3.0
- bbq_basting.ogg by j1987 *01-24-2018 EDITED TO SHORTEN*
https://freesound.org/people/j1987/sounds/106395/
CC-BY-3.0

141
mods/BBQ/README.md Normal file
View file

@ -0,0 +1,141 @@
Your Dad's BBQ Mod
---For Minetest---
v1.22 by Grizzly Adam
https://forum.minetest.net/viewtopic.php?f=9&t=19324
https://github.com/Grizzly-Adam/BBQ
Goals
-----
-Expanding the cooking & food options in Minetest
-Add working smoker and grill to Minetest
-Utilize under-used items, such as vessels, vessel shelf, and mushrooms
-Be compatible with and expand on Mobs-Redo and it's Animals pack
-Be compatible with Rubenwardy's Food Mod
-Be compatible with Auke Kok's Crops Mod
-Be compatible with Farming-Redo Mod
Documentation
-------------
For more information about what is in this pack, check the file: description.txt
New In This Version
-------------------
Changed food group names to meet the new Ruben Standard.
New In Version 1.21
-------------------
Fixed "shadow" texture bug.
Fixed wood pile bug, where items could not be placed in woodpile.
Wood Pile can now store trees, wood planks, *wood slabs, *wood stairs, and sticks.
New In Version 1.20
-------------------
Name changed to Your Dad's BBQ Mod.
Added a new smoker, renamed old smoker "Propane Grill."
Grills, propane, bags of charcoal, and beer no longer kill grass.
Added spatula, basting brush, and grill brush. All three play sounds when used with any of the grills while they are active.
Removed mutton (Mobs-Redo has offically added mutton).
Hotdog and hamburger meats must now be crafted, cooked, and combined with bread to make finished product.
bucket:bucket_milk can now be placed in the vessel shelf.
Added support for xdecor:honey.
Removed all dependences except default.
Revamped some older recipes to include tomato sauce, garlic clove, and onion.
Added a wood pile for each type of wood in the default game.
Converted all food recipes to shapeless.
New Items:
Smoker
Chimney Smoke (Place on top of a chimney)
Wood Pile
Acacia Wood Pile
Aspen Wood Pile
Junglewood Wood Pile
Pine Wood Pile
Spatula
Basting Brush
Grill Brush
Hamburger Patty (Raw and Cooked)
Hotdog (Raw and Cooked)
Pulled Pork Sandwich
London Broil (Raw and Cooked)
Stuffed Porkchop (Raw and Cooked)
Garlic
Garlic Clove
Garlic Braid
Onion
New In Version 1.12
-------------------
Adjusted food items to make output of recipes equivalent to the foods used.
Replaced beef textures.
Updated license.
New In Version 1.11
-------------------
Adjusted Kettle Grill fire animation
Fixed Kettle Grill crafting recipe.
New In Version 1.1
-------------------
New Items:
Kettle Gril
Lump Charcoal (fuel)
Charcoal Briquettes (fuel)
Bag O' Charcoal (fuel)
Propane (fuel)
Sawdust
Foil
Paprika
Molasses (byproduct of Sugar)
Steak sauce
Vinegar
Vinegar Mother
Beer
Cheese Steak
Pizza
Grilled Tomato
Brisket
Corned Beef
Veggie Kebabs
Lamb Kebabs
Smoked Pepper
Grilled Corn
Stuffed Mushroom
Portabella Steaks
Pickled peppers
Veggie Packets
Corn
Potato
New In Version 1.02
-------------------
Bug Fix: All Colours of Sheep Now Drop Mutton
Added support for Farming Redo
Improved support for Crops
New Items:
Wood Pile (can store trees, wood planks, and sticks)
Smoker Blue Print (wall hanging)
Yeast (Can be found when harvesting grass and jungle grass)
Bacon Cheeseburger
Updated Textures:
Raw Mutton
Cooked Mutton
Raw Leg of Lamb
Cooked Leg of Lamb
Sugar
Brine
Hotdog
Hamburger

707
mods/BBQ/cooking.lua Normal file
View file

@ -0,0 +1,707 @@
--------------
--ITEM RECIPES
--------------
--Smoker Craft Recipe
minetest.register_craft( {
output = "bbq:smoker",
recipe = {
{"", "", "default:steel_ingot"},
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
{"default:steel_ingot", "", "default:steel_ingot"}
}
})
--Kettle Grill Craft Recipe
minetest.register_craft( {
output = "bbq:kettle_grill",
recipe = {
{"default:steel_ingot", "bbq:charcoal_lump", "default:steel_ingot"},
{"default:steel_ingot", "bbq:charcoal_lump", "default:steel_ingot"},
{"", "default:steel_ingot", ""}
}
})
--Propane Grill Pro Craft Recipe
minetest.register_craft( {
output = "bbq:propane_grill_pro",
recipe = {
{"default:steel_ingot", "default:glass", "default:steel_ingot"},
{"default:steel_ingot", "bbq:propane", "default:steel_ingot"},
{"", "default:steel_ingot", ""}
}
})
--Propane Grill Craft Recipe
minetest.register_craft( {
output = "bbq:propane_grill",
recipe = {
{"default:steel_ingot", "default:glass", "default:steel_ingot"},
{"", "bbq:propane", ""},
{"", "default:steel_ingot", ""}
}
})
--Chimeny Smoke Craft Recipe
minetest.register_craft( {
output = "bbq:chimney_smoke",
recipe = {
{"", "group:wood", ""},
{"", "group:wood", ""},
{"", "default:torch", ""}
}
})
--Beef Map Recipe
minetest.register_craft( {
output = "bbq:beef_map",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "mobs:leather", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
--Smoker Blueprint Recipe
minetest.register_craft( {
output = "bbq:smoker_blueprint",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "dye:blue", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
--Spatula Craft Recipe
minetest.register_craft( {
output = "bbq:spatula",
recipe = {
{"", "default:tin_ingot", ""},
{"", "default:tin_ingot", ""},
{"", "default:stick", ""}
}
})
--Basting Brush Craft Recipe
minetest.register_craft( {
output = "bbq:basting_brush",
recipe = {
{"", "farming:cotton", ""},
{"", "default:tin_ingot", ""},
{"", "default:stick", ""}
}
})
--Grill Brush Craft Recipe
minetest.register_craft( {
output = "bbq:grill_brush",
recipe = {
{"", "default:tin_ingot", "farming:cotton"},
{"", "default:tin_ingot", ""},
{"", "default:stick", ""}
}
})
--Foil Craft Recipe
minetest.register_craft( {
output = "bbq:foil",
recipe = {
{"", "", ""},
{"", "", ""},
{"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"}
}
})
--Propane Craft Recipe
minetest.register_craft( {
output = "bbq:propane",
recipe = {
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
{"default:steel_ingot", "default:torch", "default:steel_ingot"},
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}
}
})
--Charcoal Bag Recipe
minetest.register_craft( {
output = "bbq:charcoal_bag",
recipe = {
{"bbq:charcoal_briquette", "bbq:charcoal_briquette", "bbq:charcoal_briquette"},
{"bbq:charcoal_briquette", "bbq:charcoal_briquette", "bbq:charcoal_briquette"},
{"bbq:charcoal_briquette", "bbq:charcoal_briquette", "bbq:charcoal_briquette"}
}
})
--Charcoal Briquette Recipe
minetest.register_craft( {
output = "bbq:charcoal_briquette",
recipe = {
{"", "bbq:sawdust", ""},
{"bbq:sawdust", "bbq:charcoal_lump", "bbq:sawdust"},
{"", "bbq:sawdust", ""}
}
})
--Charcoal Lump Recipe
minetest.register_craft( {
output = "bbq:charcoal_lump",
type = "shapeless",
recipe = {"group:tree", "default:torch"}
})
--Sawdust Craft Recipe
minetest.register_craft( {
output = "bbq:sawdust",
type = "shapeless",
recipe = {"default:stick"},
})
--------------
--FOOD RECIPES
--------------
--Beer Craft Recipe
minetest.register_craft( {
output = "bbq:beer",
type = "shapeless",
recipe = {"bucket:bucket_water", "bbq:yeast", "farming:wheat", "group:food_sugar", "vessels:drinking_glass"},
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
})
--Vinegar Craft Recipe
minetest.register_craft( {
output = "bbq:vinegar",
type = "shapeless",
recipe = {"group:food_vinegarmother", "group:food_sugar", "bucket:bucket_water"},
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
})
--Lamb Kebab Craft Recipe
minetest.register_craft( {
output = "bbq:lamb_kebab_raw 4",
type = "shapeless",
recipe = {"group:food_pepper", "mobs:mutton_raw", "default:stick", "flowers:mushroom_brown", "group:food_onion"}
})
--Rack of Lamb Craft Recipe
minetest.register_craft( {
output = "bbq:rack_lamb_raw 2",
type = "shapeless",
recipe = {"bbq:bbq_sauce", "mobs:mutton_raw", "mobs:mutton_raw"}
})
--Leg of Lamb Craft Recipe
minetest.register_craft( {
output = "bbq:leg_lamb_raw 2",
type = "shapeless",
recipe = {"group:food_garlic_clove", "mobs:mutton_raw", "mobs:mutton_raw"}
})
--Ham Craft Recipe
minetest.register_craft( {
output = "bbq:ham_raw 2",
type = "shapeless",
recipe = {"bbq:brine", "mobs:pork_raw", "group:food_honey"}
})
--Pickled Peppers Recipe
minetest.register_craft( {
output = "bbq:pickled_peppers",
type = "shapeless",
recipe = {"group:food_peppercorn", "group:food_pepper", "bbq:brine"}
})
--BBQ Chicken Craft Recipe
minetest.register_craft( {
output = "bbq:bbq_chicken_raw 3",
type = "shapeless",
recipe = {"bbq:bbq_sauce", "mobs:chicken_raw", "bbq:paprika"}
})
--BBQ Beef Ribs Craft Recipe
minetest.register_craft( {
output = "bbq:bbq_beef_ribs_raw 2",
type = "shapeless",
recipe = {"bbq:bbq_sauce", "bbq:beef_raw", "group:food_pepper_ground"}
})
--Corned Beef Craft Recipe
minetest.register_craft( {
output = "bbq:corned_beef_raw",
type = "shapeless",
recipe = {"group:food_peppercorn", "bbq:beef_raw","bbq:brine",}
})
--BBQ Brisket Craft Recipe
minetest.register_craft( {
output = "bbq:brisket_raw 2",
type = "shapeless",
recipe = {"bbq:bbq_sauce", "bbq:molasses", "bbq:beef_raw", "group:food_garlic_clove"}
})
--Hot Wings Craft Recipe
minetest.register_craft( {
output = "bbq:hot_wings_raw 3",
type = "shapeless",
recipe = {"bbq:hot_sauce", "mobs:chicken_raw", "bbq:paprika"}
})
--Cheese Steak Craft Recipe
minetest.register_craft( {
output = "bbq:cheese_steak 2",
type = "shapeless",
recipe = {"farming:bread", "group:food_pepper", "bbq:beef", "group:food_cheese", "group:food_onion"}
})
--Bacon Cheeseburger Craft Recipe
minetest.register_craft( {
output = "bbq:bacon_cheeseburger 3",
type = "shapeless",
recipe = {"farming:bread", "bbq:bacon", "bbq:hamburger_patty", "group:food_cheese"}
})
--Hamburger Craft Recipe
minetest.register_craft( {
output = "bbq:hamburger 2",
type = "shapeless",
recipe = {"farming:bread", "bbq:hamburger_patty"}
})
--Hamburger Craft Recipe
minetest.register_craft( {
output = "bbq:hamburger_patty_raw",
type = "shapeless",
recipe = {"bbq:beef_raw"}
})
--Hotdog Craft Recipe
minetest.register_craft( {
output = "bbq:hotdog 2",
type = "shapeless",
recipe = {"bbq:hotdog_cooked", "farming:bread"}
})
--Hotdog Raw Craft Recipe
minetest.register_craft( {
output = "bbq:hotdog_raw",
type = "shapeless",
recipe = {"mobs:pork_raw", "mobs:chicken_raw", "bbq:sawdust"}
})
--Pulled Pork Craft Recipe
minetest.register_craft( {
output = "bbq:pulled_pork 2",
type = "shapeless",
recipe = {"mobs:pork_cooked", "farming:bread", "bbq:bbq_sauce"}
})
--Grilled Pizza Craft Recipe
minetest.register_craft( {
output = "bbq:grilled_pizza_raw 3",
type = "shapeless",
recipe = {"group:food_cheese", "group:food_pepper", "bbq:grilled_tomato", "flowers:mushroom_brown", "group:food_salt", "farming:wheat", "bbq:yeast"}
})
--Bacon Craft Recipe
minetest.register_craft( {
output = "bbq:bacon_raw 2",
type = "shapeless",
recipe = {"bbq:liquid_smoke", "bbq:brine", "mobs:pork_raw"}
})
--London Broil Craft Recipe
minetest.register_craft( {
output = "bbq:london_broil_raw 2",
type = "shapeless",
recipe = {"bbq:bacon", "group:food_garlic_clove", "bbq:beef_raw"}
})
--Beef Jerky Craft Recipe
minetest.register_craft( {
output = "bbq:beef_jerky_raw 3",
type = "shapeless",
recipe = {"bbq:liquid_smoke", "bbq:brine", "bbq:beef_raw"}
})
--Pepper Steak Craft Recipe
minetest.register_craft( {
output = "bbq:pepper_steak_raw",
type = "shapeless",
recipe = {"group:food_pepper_ground", "bbq:beef_raw", "group:food_pepper_ground"}
})
--Stuffed Chop Craft Recipe
minetest.register_craft( {
output = "bbq:stuffed_chop_raw 3",
type = "shapeless",
recipe = {"group:food_onion", "farming:bread", "flowers:mushroom_brown", "mobs:pork_raw", "default:apple"}
})
--Stuffed Mushroom Craft Recipe
minetest.register_craft( {
output = "bbq:stuffed_mushroom_raw 2",
type = "shapeless",
recipe = {"group:food_tomato", "farming:bread", "flowers:mushroom_brown"}
})
--Veggie Kebab Craft Recipe
minetest.register_craft( {
output = "bbq:veggie_kebab_raw 2",
type = "shapeless",
recipe = {"group:food_pepper", "group:food_potato", "group:food_tomato", "flowers:mushroom_brown", "default:stick"}
})
--Veggie Packet Craft Recipe
minetest.register_craft( {
output = "bbq:veggie_packet_raw 2",
type = "shapeless",
recipe = {"group:food_pepper_ground", "group:food_tomato", "group:food_potato", "group:food_corn", "bbq:foil"}
})
--Portebello Steak Craft Recipe
minetest.register_craft( {
output = "bbq:portebello_steak_raw",
type = "shapeless",
recipe = {"group:food_pepper_ground", "bbq:steak_sauce", "flowers:mushroom_brown"}
})
--Stuffed Pepper Craft Recipe
minetest.register_craft( {
output = "bbq:stuffed_pepper_raw 3",
type = "shapeless",
recipe = {"group:food_cheese", "farming:bread", "group:food_pepper"}
})
--Grilled Corn Craft Recipe
minetest.register_craft( {
output = "bbq:grilled_corn_raw 2",
type = "shapeless",
recipe = {"group:food_cheese", "bbq:paprika", "group:food_corn"}
})
---------------------
--Spices, Sauces, Etc
---------------------
--Tomato Sauce Craft Recipe
if minetest.registered_items["crops:tomato"] ~= nil then
minetest.register_craft({
type = "shapeless",
output = "bbq:tomato_sauce",
recipe = { "group:food_tomato" },
replacements = {{"group:food_tomato","crops:tomato_seed"}}
})
else
minetest.register_craft({
type = "shapeless",
output = "bbq:tomato_sauce",
recipe = { "group:food_tomato" },
})
end
--Paprika Craft Recipe
minetest.register_craft( {
output = "bbq:paprika",
-- type = "shapeless",
recipe = {
{'bbq:smoked_pepper'},
},
})
--Garlic Clove Craft Recipe
minetest.register_craft({
type = "shapeless",
output = "bbq:garlic_clove 9",
recipe = { "group:food_garlic" }
})
--Garlic Braid Craft Recipe
minetest.register_craft({
output = "bbq:garlic_braid",
recipe = {
{"group:food_garlic", "group:food_garlic", "group:food_garlic"},
{"group:food_garlic", "group:food_garlic", "group:food_garlic"},
{"group:food_garlic", "group:food_garlic", "group:food_garlic"}
}
})
--Garlic Craft Recipe
minetest.register_craft({
type = "shapeless",
output = "bbq:garlic 9",
recipe = { "group:food_garlic_braid" }
})
--Brine
minetest.register_craft( {
output = "bbq:brine",
type = "shapeless",
recipe = {"group:food_salt", "group:food_sugar", "bucket:bucket_water", "vessels:drinking_glass"},
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
})
--Steak Sauce
minetest.register_craft( {
output = "bbq:steak_sauce",
type = "shapeless",
recipe = {"flowers:mushroom_brown", "bbq:vinegar", "bbq:hot_sauce", "vessels:glass_bottle"},
replacements = {{"bbq:vinegar","bbq:vinegar_mother"}},
})
--Liquid Smoke
minetest.register_craft( {
output = "bbq:liquid_smoke",
type = "shapeless",
recipe = {"vessels:glass_bottle", "default:torch"}
})
--Sugar
minetest.register_craft( {
output = "bbq:sugar",
-- type = "shapeless",
recipe = {
{'default:papyrus'},
},
replacements = {{"default:papyrus","bbq:molasses"}},
})
--Hot Sauce
minetest.register_craft( {
output = "bbq:hot_sauce",
type = "shapeless",
recipe = {"group:food_pepper_ground", "bucket:bucket_water", "bbq:paprika", "vessels:glass_bottle"},
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
})
--BBQ Sauce
minetest.register_craft( {
output = "bbq:bbq_sauce",
type = "shapeless",
recipe = {"bbq:molasses", "group:food_sugar", "group:food_tomato_sauce", "bbq:liquid_smoke", "bbq:vinegar"},
replacements = {{"bbq:vinegar","bbq:vinegar_mother"}},
})
---------
--COOKING
---------
--Sea Salt Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:sea_salt",
recipe = "bucket:bucket_water",
replacements = {{"bucket:bucket_water","bucket:bucket_empty"}},
cooktime = 8,
})
--Hamburger Patty Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:hamburger_patty",
recipe = "bbq:hamburger_patty_raw",
cooktime = 5,
})
--Hotdog Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:hotdog_cooked",
recipe = "bbq:hotdog_raw",
cooktime = 5,
})
--Beef Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:beef",
recipe = "bbq:beef_raw",
cooktime = 5,
})
--Beef Jerky Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:beef_jerky",
recipe = "bbq:beef_jerky_raw",
cooktime = 12,
})
--Veggie Kebab Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:veggie_kebab",
recipe = "bbq:veggie_kebab_raw",
cooktime = 8,
})
--Veggie Packet Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:veggie_packet",
recipe = "bbq:veggie_packet_raw",
cooktime = 8,
})
--Stuffed Mushroom Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:stuffed_mushroom",
recipe = "bbq:stuffed_mushroom_raw",
cooktime = 6,
})
--Stuffed Chop Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:stuffed_chop",
recipe = "bbq:stuffed_chop_raw",
cooktime = 8,
})
--Portebello Steak Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:portebello_steak",
recipe = "bbq:portebello_steak_raw",
cooktime = 6,
})
--Pepper Steak Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:pepper_steak",
recipe = "bbq:pepper_steak_raw",
cooktime = 6,
})
--Smoked Pepper Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:smoked_pepper",
recipe = "group:food_pepper",
cooktime = 9,
})
--Grilled Pizza
minetest.register_craft({
type = "cooking",
output = "bbq:grilled_pizza",
recipe = "bbq:grilled_pizza_raw",
cooktime = 5,
})
--Bacon Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:bacon",
recipe = "bbq:bacon_raw",
cooktime = 5,
})
--London Broil Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:london_broil",
recipe = "bbq:london_broil_raw",
cooktime = 6,
})
--Hot Wings Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:hot_wings",
recipe = "bbq:hot_wings_raw",
cooktime = 7,
})
--BBQ Beef Ribs Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:bbq_beef_ribs",
recipe = "bbq:bbq_beef_ribs_raw",
cooktime = 15,
})
--Corned Beef Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:corned_beef",
recipe = "bbq:corned_beef_raw",
cooktime = 15,
})
--BBQ Brisket Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:brisket",
recipe = "bbq:brisket_raw",
cooktime = 15,
})
--BBQ Chicken Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:bbq_chicken",
recipe = "bbq:bbq_chicken_raw",
cooktime = 10,
})
--Ham
minetest.register_craft({
type = "cooking",
output = "bbq:ham",
recipe = "bbq:ham_raw",
cooktime = 10,
})
--Lamb Kebab
minetest.register_craft({
type = "cooking",
output = "bbq:lamb_kebab",
recipe = "bbq:lamb_kebab_raw",
cooktime = 10,
})
--Leg of Lamb
minetest.register_craft({
type = "cooking",
output = "bbq:leg_lamb",
recipe = "bbq:leg_lamb_raw",
cooktime = 10,
})
--Rack of Lamb
minetest.register_craft({
type = "cooking",
output = "bbq:rack_lamb",
recipe = "bbq:rack_lamb_raw",
cooktime = 10,
})
--Stuffed Pepper Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:stuffed_pepper",
recipe = "bbq:stuffed_pepper_raw",
cooktime = 4,
})
--Grilled Tomato Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:grilled_tomato",
recipe = "group:food_tomato",
cooktime = 4,
})
--Grilled Corn Cooking
minetest.register_craft({
type = "cooking",
output = "bbq:grilled_corn",
recipe = "bbq:grilled_corn_raw",
cooktime = 4,
})

919
mods/BBQ/crafts.lua Normal file
View file

@ -0,0 +1,919 @@
-- Kettle Grill
minetest.register_node("bbq:kettle_grill", {
description = ("Kettle Grill"),
inventory_image = "bbq_kettle_grill.png",
wield_image = "bbq_kettle_grill.png",
drawtype = "plantlike",
tiles = {"bbq_kettle_grill.png"},
groups = {grill=1, vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_metal_defaults(),
})
-- Sawdust
minetest.register_node("bbq:sawdust", {
description = ("Saw Dust"),
inventory_image = "bbq_sawdust.png",
wield_image = "bbq_sawdust.png",
drawtype = "plantlike",
tiles = {
"bbq_sawdust.png",
},
groups = {choppy=3, oddly_breakable_by_hand=2, flammable=3},
sounds = default.node_sound_leaves_defaults(),
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
-- Chimeny Smoke
minetest.register_node("bbq:chimney_smoke", {
description = ("Chimney Smoke"),
inventory_image = "bbq_chimney_smoke.png",
wield_image = "bbq_chimney_smoke.png",
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
tiles = {
{
image = "bbq_chimney_smoke_animation.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
},
groups = {dig_immediate = 3, attached_node = 1},
})
-- Foil
minetest.register_craftitem("bbq:foil", {
description = ("Foil"),
inventory_image = "bbq_foil.png",
wield_image = "bbq_foil.png",
})
-- Charocal Briquette
minetest.register_craftitem("bbq:charcoal_briquette", {
description = ("Charcoal Briquette"),
inventory_image = "bbq_charcoal_briquette.png",
wield_image = "bbq_charcoal_briquette.png",
})
minetest.register_craft({
type = "fuel",
recipe = "bbq:charcoal_briquette",
burntime = 10,
})
-- Charocal Lump
minetest.register_craftitem("bbq:charcoal_lump", {
description = ("Charcoal Lump"),
inventory_image = "bbq_charcoal_lump.png",
wield_image = "bbq_charcoal_lump.png",
})
minetest.register_craft({
type = "fuel",
recipe = "bbq:charcoal_lump",
burntime = 25,
})
-- Charcoal Bag
minetest.register_node("bbq:charcoal_bag", {
description = ("Bag o' Charcoal"),
inventory_image = "bbq_charcoal_bag.png",
wield_image = "bbq_charcoal_bag.png",
drawtype = "plantlike",
sunlight_propagates = true,
tiles = {
"bbq_charcoal_bag_top.png", "bbq_charcoal_bag_top.png",
"bbq_charcoal_bag_side.png", "bbq_charcoal_bag_side.png",
"bbq_charcoal_bag_back.png", "bbq_charcoal_bag.png",
},
groups = {dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.21, -0.5, -0.1, 0.21, 0.22, 0.1},
{-0.235, 0.22, -0.025, 0.235, 0.25, 0.025},
},
},
})
minetest.register_craft({
type = "fuel",
recipe = "bbq:charcoal_bag",
burntime = 150,
})
-- Propane
minetest.register_node("bbq:propane", {
description = ("Propane"),
inventory_image = "bbq_propane.png",
paramtype = "light",
paramtype2 = "facedir",
wield_image = "bbq_propane.png",
drawtype = "plantlike",
sunlight_propagates = true,
tiles = {"bbq_propane.png"},
groups = {explody = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_metal_defaults(),
})
minetest.register_craft({
type = "fuel",
recipe = "bbq:propane",
burntime = 500,
})
-- Beer
minetest.register_node("bbq:beer", {
description = ("Beer"),
inventory_image = "bbq_beer.png",
wield_image = "bbq_beer.png",
drawtype = "plantlike",
sunlight_propagates = true,
tiles = {
"bbq_beer_top.png", "bbq_beer_top.png^[transformFy",
"bbq_beer.png", "bbq_beer.png",
"bbq_beer.png", "bbq_beer.png^[transformFx",
},
groups = {dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.18, -0.5, -0.18, 0.18, 0.3, 0.18},
{-0.3, -0.25, -0.06, -0.18, 0.18, 0.06},
},
},
on_use = minetest.item_eat(6),
})
-- Vinegar
minetest.register_node("bbq:vinegar", {
description = ("Vinegar"),
inventory_image = "bbq_vinegar.png",
wield_image = "bbq_vinegar.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_vinegar.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Vinegar Mother
minetest.register_node("bbq:vinegar_mother", {
description = ("Vinegar Mother"),
inventory_image = "bbq_vinegar_mother.png",
wield_image = "bbq_vinegar_mother.png",
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"bbq_vinegar_mother.png"},
groups = {food_vinegarmother=1, vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Veggie Kebab
minetest.register_craftitem("bbq:veggie_kebab", {
description = ("Veggie Kebab"),
inventory_image = "bbq_veggie_kebab.png",
on_use = minetest.item_eat(8),
})
-- Veggie Kebab Raw
minetest.register_craftitem("bbq:veggie_kebab_raw", {
description = ("Veggie Kebab Raw"),
inventory_image = "bbq_veggie_kebab_raw.png",
on_use = minetest.item_eat(4),
})
-- Veggie Packet
minetest.register_craftitem("bbq:veggie_packet", {
description = ("Veggie Packet"),
inventory_image = "bbq_veggie_packet.png",
on_use = minetest.item_eat(5),
})
-- Veggie Packet Raw
minetest.register_craftitem("bbq:veggie_packet_raw", {
description = ("Veggie Packet Raw"),
inventory_image = "bbq_veggie_packet_raw.png",
on_use = minetest.item_eat(4),
})
-- Stuffed Mushroom
minetest.register_craftitem("bbq:stuffed_mushroom", {
description = ("Stuffed Mushroom"),
inventory_image = "bbq_stuffed_mushroom.png",
on_use = minetest.item_eat(9),
})
-- Stuffed Mushroom Raw
minetest.register_craftitem("bbq:stuffed_mushroom_raw", {
description = ("Stuffed Mushroom Raw"),
inventory_image = "bbq_stuffed_mushroom_raw.png",
on_use = minetest.item_eat(5),
})
-- Portebello Steak_Raw
minetest.register_craftitem("bbq:portebello_steak_raw", {
description = ("Portebello Steak Raw"),
inventory_image = "bbq_portebello_steak_raw.png",
on_use = minetest.item_eat(5),
})
-- Portebello Steak
minetest.register_craftitem("bbq:portebello_steak", {
description = ("Portebello Steak"),
inventory_image = "bbq_portebello_steak.png",
on_use = minetest.item_eat(9),
})
-- Lamb Kebab
minetest.register_craftitem("bbq:lamb_kebab", {
description = ("Lamb Kebab"),
inventory_image = "bbq_lamb_kebab.png",
on_use = minetest.item_eat(4),
})
-- Lamb Kebab Raw
minetest.register_craftitem("bbq:lamb_kebab_raw", {
description = ("Lamb Kebab Raw"),
inventory_image = "bbq_lamb_kebab_raw.png",
on_use = minetest.item_eat(2),
})
-- Rack of Lamb
minetest.register_craftitem("bbq:rack_lamb", {
description = ("Rack of Lamb"),
inventory_image = "bbq_rack_lamb.png",
on_use = minetest.item_eat(10),
})
-- Rack of Lamb Raw
minetest.register_craftitem("bbq:rack_lamb_raw", {
description = ("Rack of Lamb Raw"),
inventory_image = "bbq_rack_lamb_raw.png",
on_use = minetest.item_eat(5),
})
-- Leg of Lamb
minetest.register_craftitem("bbq:leg_lamb", {
description = ("Leg of Lamb"),
inventory_image = "bbq_leg_lamb.png",
on_use = minetest.item_eat(9),
})
-- Leg of Lamb Raw
minetest.register_craftitem("bbq:leg_lamb_raw", {
description = ("Leg of Lamb Raw"),
inventory_image = "bbq_leg_lamb_raw.png",
on_use = minetest.item_eat(4),
})
-- Ham
minetest.register_craftitem("bbq:ham", {
description = ("Ham"),
inventory_image = "bbq_ham.png",
on_use = minetest.item_eat(9),
})
-- Ham Raw
minetest.register_craftitem("bbq:ham_raw", {
description = ("Ham Raw"),
inventory_image = "bbq_ham_raw.png",
on_use = minetest.item_eat(4),
})
-- BBQ Chicken
minetest.register_craftitem("bbq:bbq_chicken", {
description = ("BBQ Chicken"),
inventory_image = "bbq_bbq_chicken.png",
on_use = minetest.item_eat(8),
})
-- BBQ Chicken Raw
minetest.register_craftitem("bbq:bbq_chicken_raw", {
description = ("BBQ Chicken Raw"),
inventory_image = "bbq_bbq_chicken_raw.png",
on_use = minetest.item_eat(4),
})
-- Corned Beef Raw
minetest.register_craftitem("bbq:corned_beef_raw", {
description = ("Corned Beef Raw"),
inventory_image = "bbq_corned_beef_raw.png",
on_use = minetest.item_eat(5),
})
-- Corned Beef
minetest.register_craftitem("bbq:corned_beef", {
description = ("Corned Beef"),
inventory_image = "bbq_corned_beef.png",
on_use = minetest.item_eat(10),
})
-- BBQ Brisket
minetest.register_craftitem("bbq:brisket", {
description = ("BBQ Brisket"),
inventory_image = "bbq_brisket.png",
on_use = minetest.item_eat(9),
})
-- BBQ Brisket Raw
minetest.register_craftitem("bbq:brisket_raw", {
description = ("BBQ Brisket Raw"),
inventory_image = "bbq_brisket_raw.png",
on_use = minetest.item_eat(4),
})
-- BBQ Beef Ribs
minetest.register_craftitem("bbq:bbq_beef_ribs", {
description = ("BBQ Ribs"),
inventory_image = "bbq_beef_ribs.png",
on_use = minetest.item_eat(9),
})
-- BBQ Beef Ribs Raw
minetest.register_craftitem("bbq:bbq_beef_ribs_raw", {
description = ("BBQ Ribs Raw"),
inventory_image = "bbq_beef_ribs_raw.png",
on_use = minetest.item_eat(4),
})
-- Hot Wings Raw
minetest.register_craftitem("bbq:hot_wings_raw", {
description = ("Hot Wings Raw"),
inventory_image = "bbq_hot_wings_raw.png",
on_use = minetest.item_eat(3),
})
-- Hot Wings
minetest.register_craftitem("bbq:hot_wings", {
description = ("Hot Wings"),
inventory_image = "bbq_hot_wings.png",
on_use = minetest.item_eat(8),
})
-- Bacon Cheeseburger
minetest.register_craftitem("bbq:bacon_cheeseburger", {
description = ("Bacon Cheeseburger"),
inventory_image = "bbq_bacon_cheeseburger.png",
on_use = minetest.item_eat(9),
})
-- Cheese Steak
minetest.register_craftitem("bbq:cheese_steak", {
description = ("Cheese Steak"),
inventory_image = "bbq_cheese_steak.png",
on_use = minetest.item_eat(8),
})
-- Hamburger
minetest.register_craftitem("bbq:hamburger", {
description = ("Hamburger"),
inventory_image = "bbq_hamburger.png",
on_use = minetest.item_eat(9),
})
-- Hamburger Patty
minetest.register_craftitem("bbq:hamburger_patty", {
description = ("Hamburger Patty"),
inventory_image = "bbq_hamburger_patty.png",
on_use = minetest.item_eat(8),
})
-- Hamburger Patty Raw
minetest.register_craftitem("bbq:hamburger_patty_raw", {
description = ("Hamburger Patty Raw"),
inventory_image = "bbq_hamburger_patty_raw.png",
on_use = minetest.item_eat(3),
})
-- Hot Dog
minetest.register_craftitem("bbq:hotdog", {
description = ("Hot Dog"),
inventory_image = "bbq_hotdog.png",
on_use = minetest.item_eat(8),
})
-- Hotdog Raw
minetest.register_craftitem("bbq:hotdog_cooked", {
description = ("Hotdog Cooked"),
inventory_image = "bbq_hotdog_cooked.png",
on_use = minetest.item_eat(7),
})
-- Hotdog Raw
minetest.register_craftitem("bbq:hotdog_raw", {
description = ("Hotdog Raw"),
inventory_image = "bbq_hotdog_raw.png",
on_use = minetest.item_eat(3),
})
-- Pulled Pork
minetest.register_craftitem("bbq:pulled_pork", {
description = ("Pulled Pork"),
inventory_image = "bbq_pulled_pork.png",
on_use = minetest.item_eat(8),
})
-- Grilled Pizza Raw
minetest.register_craftitem("bbq:grilled_pizza_raw", {
description = ("Grilled Pizza Raw"),
inventory_image = "bbq_grilled_pizza_raw.png",
on_use = minetest.item_eat(5),
})
-- Grilled Pizza
minetest.register_craftitem("bbq:grilled_pizza", {
description = ("Grilled Pizza"),
inventory_image = "bbq_grilled_pizza.png",
on_use = minetest.item_eat(8),
})
-- Raw Beef Jerky
minetest.register_craftitem("bbq:beef_jerky_raw", {
description = ("Beef Jerky Raw"),
inventory_image = "bbq_beef_jerky_raw.png",
on_use = minetest.item_eat(2),
})
-- Beef Jerky
minetest.register_craftitem("bbq:beef_jerky", {
description = ("Beef Jerky"),
inventory_image = "bbq_beef_jerky.png",
on_use = minetest.item_eat(5),
})
-- Raw Pepper Steak
minetest.register_craftitem("bbq:pepper_steak_raw", {
description = ("Pepper Steak Raw"),
inventory_image = "bbq_pepper_steak_raw.png",
on_use = minetest.item_eat(4),
})
-- Pepper Steak
minetest.register_craftitem("bbq:pepper_steak", {
description = ("Pepper Steak"),
inventory_image = "bbq_pepper_steak.png",
on_use = minetest.item_eat(10),
})
-- Raw Bacon
minetest.register_craftitem("bbq:bacon_raw", {
description = ("Bacon Raw"),
inventory_image = "bbq_bacon_raw.png",
on_use = minetest.item_eat(3),
})
-- Bacon
minetest.register_craftitem("bbq:bacon", {
description = ("Bacon"),
inventory_image = "bbq_bacon.png",
on_use = minetest.item_eat(7),
})
-- London Broil Raw
minetest.register_craftitem("bbq:london_broil_raw", {
description = ("London Broil Raw"),
inventory_image = "bbq_london_broil_raw.png",
on_use = minetest.item_eat(3),
})
-- London Broil
minetest.register_craftitem("bbq:london_broil", {
description = ("London Broil"),
inventory_image = "bbq_london_broil.png",
on_use = minetest.item_eat(7),
})
-- Stuffed Chop Raw
minetest.register_craftitem("bbq:stuffed_chop_raw", {
description = ("Stuffed Chop Raw"),
inventory_image = "bbq_stuffed_chop_raw.png",
on_use = minetest.item_eat(3),
})
-- Stuffed Chop
minetest.register_craftitem("bbq:stuffed_chop", {
description = ("Stuffed Chop"),
inventory_image = "bbq_stuffed_chop.png",
on_use = minetest.item_eat(8),
})
-- Stuffed Pepper
minetest.register_craftitem("bbq:stuffed_pepper", {
description = ("Stuffed Pepper"),
inventory_image = "bbq_stuffed_pepper.png",
on_use = minetest.item_eat(9),
})
-- Stuffed Pepper Raw
minetest.register_craftitem("bbq:stuffed_pepper_raw", {
description = ("Stuffed Pepper Raw"),
inventory_image = "bbq_stuffed_pepper_raw.png",
on_use = minetest.item_eat(4),
})
--Smoked Pepper
minetest.register_craftitem("bbq:smoked_pepper", {
description = ("Smoked Pepper"),
inventory_image = "bbq_smoked_pepper.png",
on_use = minetest.item_eat(5),
})
--Tomato Sauce
minetest.register_craftitem("bbq:tomato_sauce", {
description = ("Tomato Sauce"),
inventory_image = "bbq_tomato_sauce.png",
groups = { food_tomato_sauce=1, vessel=1 },
on_use = minetest.item_eat(2)
})
--Grilled Tomato
minetest.register_craftitem("bbq:grilled_tomato", {
description = ("Grilled Tomato"),
inventory_image = "bbq_grilled_tomato.png",
on_use = minetest.item_eat(5),
})
--Grilled Corn
minetest.register_craftitem("bbq:grilled_corn", {
description = ("Grilled Corn"),
inventory_image = "bbq_grilled_corn.png",
on_use = minetest.item_eat(8),
})
--Grilled Corn Raw
minetest.register_craftitem("bbq:grilled_corn_raw", {
description = ("Grilled Corn Raw"),
inventory_image = "bbq_grilled_corn_raw.png",
on_use = minetest.item_eat(5),
})
--Paprika
minetest.register_node("bbq:paprika", {
description = ("Smoked Paprika"),
inventory_image = "bbq_paprika.png",
wield_image = "bbq_paprika.png",
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"bbq_paprika.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Sea Salt
minetest.register_node("bbq:sea_salt", {
description = ("Sea Salt"),
inventory_image = "bbq_sea_salt.png",
wield_image = "bbq_sea_salt.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_sea_salt.png"},
groups = {food_salt=1, vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Brine
minetest.register_node("bbq:brine", {
description = ("Brine"),
inventory_image = "bbq_brine.png",
wield_image = "bbq_brine.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_brine.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Pickled Peppers
minetest.register_node("bbq:pickled_peppers", {
description = ("Pickled Peppers"),
inventory_image = "bbq_pickled_peppers.png",
wield_image = "bbq_pickled_peppers.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_pickled_peppers.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
on_use = minetest.item_eat(5),
})
-- Steak Sauce
minetest.register_node("bbq:steak_sauce", {
description = ("Steak Sauce"),
inventory_image = "bbq_steak_sauce.png",
wield_image = "bbq_steak_sauce.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_steak_sauce.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Liquid Smoke
minetest.register_node("bbq:liquid_smoke", {
description = ("Liquid Smoke"),
inventory_image = "bbq_liquid_smoke.png",
wield_image = "bbq_liquid_smoke.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_liquid_smoke.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Sugar
minetest.register_node("bbq:sugar", {
description = ("Sugar"),
inventory_image = "bbq_sugar.png",
wield_image = "bbq_sugar.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_sugar.png"},
groups = {vessel = 1, food_sugar=1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
on_use = minetest.item_eat(2),
})
-- Molasses
minetest.register_node("bbq:molasses", {
description = ("Molasses"),
inventory_image = "bbq_molasses.png",
wield_image = "bbq_molasses.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_molasses.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- Hot Sauce
minetest.register_node("bbq:hot_sauce", {
description = ("Hot Sauce"),
inventory_image = "bbq_hot_sauce.png",
wield_image = "bbq_hot_sauce.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_hot_sauce.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-- BBQ Sauce
minetest.register_node("bbq:bbq_sauce", {
description = ("BBQ Sauce"),
inventory_image = "bbq_bbq_sauce.png",
wield_image = "bbq_bbq_sauce.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_bbq_sauce.png"},
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("bbq:beef_map", {
description = "Beef Map",
inventory_image = "bbq_cow_map.png",
tiles = {
"default_junglewood.png", "default_junglewood.png",
"default_junglewood.png", "default_junglewood.png",
"default_junglewood.png", "bbq_cow_map.png",
},
paramtype2 = "facedir",
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5},
},
},
groups = {choppy=3, oddly_breakable_by_hand=2, flammable=3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("bbq:smoker_blueprint", {
description = "Smoker Blueprint",
inventory_image = "bbq_smoker_blueprint.png",
tiles = {
"default_pine_wood.png", "default_pine_wood.png",
"default_pine_wood.png", "default_pine_wood.png",
"default_pine_wood.png", "bbq_smoker_blueprint.png",
},
paramtype2 = "facedir",
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5},
},
},
groups = {choppy=3, oddly_breakable_by_hand=2, flammable=3},
sounds = default.node_sound_wood_defaults(),
})
-- Yeast
minetest.register_node("bbq:yeast", {
description = ("Yeast"),
inventory_image = "bbq_yeast.png",
wield_image = "bbq_yeast.png",
paramtype = "light",
paramtype2 = "facedir",
drawtype = "plantlike",
tiles = {"bbq_yeast.png"},
groups = {food_vinegarmother=1, vessel = 1, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_glass_defaults(),
})
-------------------
--Animal Drop Meats
-------------------
-- Raw Beef
minetest.register_craftitem("bbq:beef_raw", {
description = ("Raw Beef"),
inventory_image = "bbq_beef_raw.png",
on_use = minetest.item_eat(3),
})
-- Cooked Beef
minetest.register_craftitem("bbq:beef", {
description = ("Beef"),
inventory_image = "bbq_beef_cooked.png",
on_use = minetest.item_eat(8),
})
------------
--Utensils--
------------
local cold_grills = {
"bbq:kettle_grill",
"bbq:propane_grill",
"bbq:propane_grill_pro",
"bbq:smoker",
}
local hot_grills = {
"bbq:kettle_grill_active",
"bbq:propane_grill_active",
"bbq:propane_grill_pro_active",
"bbq:smoker_active",
}
local function on_use_play_sound(sound, use_on_cold)
return function(itemstack, placer, pointed_thing)
if not pointed_thing or pointed_thing.type ~= "node" then return end
local under_pos = pointed_thing.under
local under_node_name = minetest.get_node(under_pos).name
for _, grill_name in ipairs(hot_grills) do
if under_node_name == grill_name then
minetest.sound_play(sound, { pos = under_pos, max_hear_distance = 10 })
return
end
end
if use_on_cold then
for _, grill_name in ipairs(cold_grills) do
if under_node_name == grill_name then
minetest.sound_play(sound, { pos = under_pos, max_hear_distance = 10 })
return
end
end
end
end
end
--Spatula
minetest.register_node("bbq:spatula", {
description = ("Spatula"),
inventory_image = "bbq_spatula.png",
wield_image = "bbq_spatula.png",
groups = {dig_immediate = 3, cracky=1, oddly_breakable_by_hand=1},
sounds = default.node_sound_metal_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"bbq_spatula_tile.png", "bbq_spatula_tile.png",
"bbq_spatula_tile.png", "bbq_spatula_tile.png",
"bbq_spatula_tile.png", "bbq_spatula_tile.png",
},
groups = {vessel = 1, dig_immediate = 3},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.15, -0.45, 0.5, 0.125, -.218, 0.45,},
{-0.105, -0.218, 0.5, 0.085, -0.19, 0.45,},
{-0.0625, -0.19, 0.5, 0.03125, .5, 0.45,},
-- {-0.15, -0.45, 0.5, 0.125, -.1, 0.45,},
},
},
on_use = on_use_play_sound("bbq_sizzle"),
})
--Basting Brush
minetest.register_node("bbq:basting_brush", {
description = ("Basting Brush"),
inventory_image = "bbq_basting_brush.png",
wield_image = "bbq_basting_brush.png",
groups = {dig_immediate = 3, cracky=1, oddly_breakable_by_hand=1},
sounds = default.node_sound_metal_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"bbq_basting_brush_hang.png", "bbq_basting_brush_hang.png",
"bbq_basting_brush_hang.png", "bbq_basting_brush_hang.png",
"bbq_basting_brush_hang.png", "bbq_basting_brush_hang.png",
},
groups = {vessel = 1, dig_immediate = 3},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.085, -0.45, 0.5, 0.085, -.2525, 0.45,},
{-0.0625, -0.2525, 0.5, 0.0625, -.218, 0.45,},
{-0.03, -0.218, 0.5, 0.03, 0.0 , 0.45,},
{-0.0625, 0.0, 0.5, 0.0625, 0.465, 0.45,},
{-0.03, .465, 0.5, 0.03, .5, 0.45,},
},
},
on_use = on_use_play_sound("bbq_basting"),
})
--Grill Brush
minetest.register_node("bbq:grill_brush", {
description = ("Grill Brush"),
inventory_image = "bbq_grill_brush.png",
wield_image = "bbq_grill_brush.png",
groups = {dig_immediate = 3, cracky=1, oddly_breakable_by_hand=1},
sounds = default.node_sound_metal_defaults(),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {
"bbq_grill_brush_hang_top.png", "bbq_grill_brush_hang.png",
"bbq_grill_brush_hang.png", "bbq_grill_brush_hang.png",
"bbq_grill_brush_hang.png", "bbq_grill_brush_hang.png",
},
groups = {vessel = 1, dig_immediate = 3},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.12, -0.5, 0.49, 0.12, -.467, 0.48,},
{-0.15, -0.467, 0.5, 0.15, -.2225, 0.45,},
{-0.125, -0.44, 0.5, 0.125, -.25, 0.35,},
{-0.03, -0.2225, 0.5, 0.03, 0.13, 0.45,},
{-0.0625, 0.13 , 0.5, 0.0625, 0.485, 0.45,},
{-0.03, .485, 0.5, 0.03, .5, 0.45,},
},
},
on_use = on_use_play_sound("bbq_grill_brush", true),
})

10
mods/BBQ/depends.txt Normal file
View file

@ -0,0 +1,10 @@
default
bucket?
mobs?
mobs_animal?
craft_guide?
food?
crops?
vessels?
farming?
xdecor?

84
mods/BBQ/description.txt Normal file
View file

@ -0,0 +1,84 @@
Your Dad's BBQ Mod
---For Minetest---
Cause Mobs-Redo cows to drop beef.
Play's nice with Crops, Food, and Farming Redo addons. Can use potatos, corn, tomatos, chili peppers, cheese, sugar, and honey from Crops, Food, Farming Redo, Mobs-Redo and xDecor add-ons. Also compatible with Crops Plus, my expansion of the Crops add-on (adds peppers, peppercorns, and ground pepper to the Crops add-on, all are present in this addon but without the actual pepper plant).
Upgrades the BTUs of wood and wood planks in a realistic way when used in furnaces (including the smoker). Allows trees, planks, wooden slabs, wooden stairs, and sticks to be stored in woodpile.
Adds propane and charcoal fuels.
All spices and sauces can be placed on the vessels shelf. Also added support for placing the bucket in the vessels shelf.
Adds the following items:
Smoker
Kettle Grill
Propane Grill
Beef Map (Wall Hanging)
Smoker Blueprint (Wall Hanging)
Lump Charcoal (fuel)
Charcoal Briquettes (fuel)
Bag O' Charcoal (fuel)
Propane (fuel)
Sawdust
Foil
Chimney Smoke (Place on top of a chimney)
Wood Pile
Acaica Wood Pile
Aspen Wood Pile
Junglewood Wood Pile
Pine Wood Pile
Spatula
Basting Brush
Grill Brush
Paprika
Sea Salt
Sugar
Molasses (byproduct of Sugar)
Yeast (Can be found when harvesting grass and jungle grass)
Brine
Liquid Smoke
Hot suace
BBQ Sauce
Steak sauce
Vinegar
Vinegar Mother
Beef (Raw & Cooked)
Rack of Lamb (Raw & Cooked)
Leg of Lamb (Raw & Cooked)
Ham (Raw & Cooked)
BBQ Chicken (Raw & Cooked)
BBQ Beef Ribs (Raw & Cooked)
Hot Wings (Raw & Cooked)
Hamburger
Hamburger Patty (Raw and Cooked)
Bacon Cheeseburger
Hot Dog
Hotdog (Raw and Cooked)
Pulled Pork Sandwich
London Broil (Raw and Cooked)
Stuffed Porkchop (Raw and Cooked)
Beef Jerky (Raw & Cooked)
Pepper Steak (Raw & Cooked)
Bacon (Raw & Cooked)
Stuffed Pepper
Beer
Cheese Steak (Raw & Cooked)
Grilled Pizza (Raw & Cooked)
Grilled Tomato
Brisket (Raw & Cooked)
Corned Beef (Raw & Cooked)
Veggie Kebabs (Raw & Cooked)
Lamb Kebabs (Raw & Cooked)
Smoked Pepper (Raw & Cooked)
Grilled Corn (Raw & Cooked)
Stuffed Mushroom (Raw & Cooked)
Portebello Steaks (Raw & Cooked)
Pickled peppers
Veggie Packets (Raw & Cooked)

8
mods/BBQ/init.lua Normal file
View file

@ -0,0 +1,8 @@
dofile(minetest.get_modpath("bbq").."/cooking.lua")
dofile(minetest.get_modpath("bbq").."/crafts.lua")
dofile(minetest.get_modpath("bbq").."/kettle.lua")
dofile(minetest.get_modpath("bbq").."/propane_grill.lua")
dofile(minetest.get_modpath("bbq").."/propane_grill_pro.lua")
dofile(minetest.get_modpath("bbq").."/smoker.lua")
dofile(minetest.get_modpath("bbq").."/overrides.lua")
dofile(minetest.get_modpath("bbq").."/woodpile.lua")

495
mods/BBQ/kettle.lua Normal file
View file

@ -0,0 +1,495 @@
--
-- Formspecs
--
function default.get_smoker_active_formspec(fuel_percent, item_percent)
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_kettle_grill_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":bbq_kettle_grill_fire_fg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_smoker_arrow_fg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
function default.get_smoker_inactive_formspec()
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_kettle_grill_fire_bg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
--
-- Node callback functions that are the same for active and inactive smoker
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "smoker is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function smoker_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local cookable, cooked
local fuel
local update = true
while elapsed > 0 and update do
update = false
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
local el = math.min(elapsed, fuel_totaltime - fuel_time)
if cookable then -- fuel lasts long enough, adjust el to cooking duration
el = math.min(el, cooked.time - src_time)
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The smoker is currently active and has enough fuel
fuel_time = fuel_time + el
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + el
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
end
else
-- Item could not be cooked: probably missing fuel
update = true
end
end
else
-- smoker ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
end
elapsed = elapsed - el
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist[1]:is_empty() then
src_time = 0
end
--
-- Update formspec, infotext and node
--
local formspec
local item_state
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
if item_percent > 100 then
item_state = "100% (output full)"
else
item_state = item_percent .. "%"
end
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive"
local result = false
if fuel_totaltime ~= 0 then
active = "active"
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = default.get_smoker_active_formspec(fuel_percent, item_percent)
swap_node(pos, "bbq:kettle_grill_active")
-- make sure timer restarts automatically
result = true
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
formspec = default.get_smoker_inactive_formspec()
swap_node(pos, "bbq:kettle_grill")
-- stop timer on the inactive smoker
minetest.get_node_timer(pos):stop()
end
local infotext = "smoker " .. active .. "\n(Item: " .. item_state ..
"; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
-------------------
-- Node definitions
-------------------
minetest.register_node("bbq:kettle_grill", {
description = "Kettle Grill",
inventory_image = "bbq_kettle_grill_inv.png",
wield_image = "bbq_kettle_grill_inv.png",
tiles = {
"bbq_kettle_grill_ext_top.png", "bbq_kettle_grill_ext_top.png",
"bbq_kettle_grill_ext.png", "bbq_kettle_grill_ext.png",
"bbq_kettle_grill_ext.png", "bbq_kettle_grill_ext.png",
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.3, 0.5}, -- main body
},
},
groups = {cracky=2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
can_dig = can_dig,
on_timer = smoker_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.get_smoker_inactive_formspec())
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('fuel', 1 )
inv:set_size('dst', 9)
end,
on_metadata_inventory_move = function(pos)
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether smoker can burn or not.
minetest.get_node_timer(pos):start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "bbq:kettle_grill"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
after_place_node = function(pos, placer)
minetest.set_node({x = pos.x, y = pos.y, z = pos.z},{name = "bbq:kettle_grill_base", param2=minetest.dir_to_facedir(placer:get_look_dir())});
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "bbq:kettle_grill", param2=minetest.dir_to_facedir(placer:get_look_dir())});
end,
after_destruct = function(pos, oldnode)
if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "bbq:kettle_grill_base" then
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z},{name = "air"}) end
end,
})
minetest.register_node("bbq:kettle_grill_active", {
description = "Kettle Grill Active",
inventory_image = "bbq_kettle_grill_inv.png",
wield_image = "bbq_kettle_grill_inv.png",
tiles = {
"bbq_kettle_grill_ext_top_ani.png", "bbq_kettle_grill_ext_top.png",
"bbq_kettle_grill_ext_ani.png", "bbq_kettle_grill_ext_ani.png",
"bbq_kettle_grill_ext_ani.png", "bbq_kettle_grill_ext_ani.png",
},
tiles = {
"bbq_kettle_grill_ext_top_ani.png", "bbq_kettle_grill_ext_top.png",
{
image = "bbq_kettle_grill_ext_ani.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_kettle_grill_ext_ani.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_kettle_grill_ext_ani.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_kettle_grill_ext_ani.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, -- main body
{-0.18, -0.3, -0.0, 0.18, .4, 0.0}, -- smoke
{-0.0, -0.3, -0.18, 0.0, .4, 0.18}, -- smoke
},
},
groups = {cracky=2, not_in_creative_inventory=1},
drop = "bbq:kettle_grill",
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
on_timer = smoker_node_timer,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
after_place_node = function(pos, placer)
minetest.set_node({x = pos.x, y = pos.y, z = pos.z},{name = "bbq:kettle_grill_base", param2=minetest.dir_to_facedir(placer:get_look_dir())});
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "bbq:kettle_grill", param2=minetest.dir_to_facedir(placer:get_look_dir())});
end,
after_destruct = function(pos, oldnode)
if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "bbq:kettle_grill_base" then
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z},{name = "air"}) end
end,
})
minetest.register_node("bbq:kettle_grill_base", {
description = "Kettle Grill Base",
tiles = {
"bbq_kettle_top.png", "bbq_kettle_bottom.png^[transformFY",
"bbq_kettle.png^[transformFX", "bbq_kettle.png",
"bbq_kettle_side.png", "bbq_kettle_side.png",
},
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.45, 0.4, -0.45, 0.45, 0.5, 0.45}, -- main body
{-0.4, 0.313, -0.4, 0.4, 0.5, 0.4}, -- main body
{-0.1, 0.1, -0.05, 0.05, 0.5, 0.05}, -- catch can
{-0.342, -0.5, -0.35, -0.292, 0.5, -0.30}, -- leg
{-0.342, -0.5, 0.35, -0.292, 0.5, 0.30}, -- leg
{0.342, -0.5, -0.35, 0.292, 0.5, -0.30}, -- leg
{0.342, -0.5, 0.35, 0.292, 0.5, 0.30}, -- leg
{-0.342, -0.3, -0.35, 0.35, -0.35, -0.30}, -- cross support
{-0.342, -0.3, 0.35, 0.30, -0.35, 0.30}, -- cross support
{0.342, -0.3, -0.35, 0.30, -0.35, 0.35}, -- cross support
{-0.342, -0.3, -0.35, -0.30, -0.35, 0.35}, -- cross support
{-0.30, -0.315, -0.2, 0.30, -0.335, -0.18}, -- grid
{-0.30, -0.315, 0.2, 0.30, -0.335, 0.18}, -- grid
{-0.30, -0.315, -0.06, 0.30, -0.335, -0.08}, -- grid
{-0.30, -0.315, 0.06, 0.30, -0.335, 0.08}, -- grid
{-0.2, -0.315, 0.30, -0.18, -0.335, -0.30}, -- grid
{0.2, -0.315, 0.30, 0.18, -0.335, -0.30}, -- grid
{-0.06, -0.315, 0.30, -0.08, -0.335, -0.30}, -- grid
{0.06, -0.315, 0.30, 0.08, -0.335, -0.30}, -- grid
{-0.468, -0.5, -0.425, -0.35, -0.25, -0.225}, -- wheel
{-0.468, -0.475, -0.45, -0.35, -0.275, -0.20}, -- wheel
{-0.475, -0.375, -0.345, -0.415, -0.345, -0.315}, -- bolt
{0.45, -0.5, -0.425, 0.35, -0.25, -0.225}, -- wheel
{0.45, -0.475, -0.45, 0.35, -0.275, -0.20}, -- wheel
{0.475, -0.375, -0.345, 0.415, -0.345, -0.315}, -- bolt
{-0.29, -0.5, 0.36, -0.36, -0.4375, 0.29}, -- foot
{0.29, -0.5, 0.36, 0.36, -0.4375, 0.29}, -- foot
-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- main body
},
},
groups = {cracky=2, not_in_creative_inventory=1},
drop = "bbq:kettle_grill",
after_destruct = function(pos, oldnode)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "air"})
end,
after_place_node = function(pos, placer)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "bbq:kettle_grill", param2=minetest.dir_to_facedir(placer:get_look_dir())});
end,
})

1
mods/BBQ/mod.conf Normal file
View file

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

181
mods/BBQ/overrides.lua Normal file
View file

@ -0,0 +1,181 @@
---------
--ALIASES
---------
minetest.register_alias("bbq:mutton_raw", "mobs:mutton_raw")
minetest.register_alias("bbq:mutton", "mobs:mutton_cooked")
minetest.register_alias("bbq:wood_pile", "bbq:woodpile_aspen")
--------------------------
--COMPATIBILITY WITH CROPS
--------------------------
if minetest.registered_items["crops:tomato"] ~= nil then
minetest.override_item("crops:tomato", {
groups = {food_tomato=1},
})
end
if minetest.registered_items["crops:pepper"] ~= nil then
minetest.override_item("crops:pepper", {
groups = {food_pepper=1},
})
end
if minetest.registered_items["crops:peppercorn"] ~= nil then
minetest.override_item("crops:peppercorn", {
groups = {food_peppercorn=1},
})
end
if minetest.registered_items["crops:corn_cob"] ~= nil then
minetest.override_item("crops:corn_cob", {
groups = {food_corn=1},
})
end
if minetest.registered_items["crops:potato"] ~= nil then
minetest.override_item("crops:potato", {
groups = {food_potato=1},
})
end
--------------------xdecor-----------------------------
if minetest.registered_items["xdecor:honey"] ~= nil then
minetest.override_item("xdecor:honey", {
groups = {food_sugar=1, food_honey=1},
})
end
---------------------------------
--UPGRADE MEAT DROPS IN MOBS REDO
---------------------------------
if minetest.registered_items["mobs_animal:cow"] ~= nil then
local def = minetest.registered_entities["mobs_animal:cow"]
assert(def, "mobs:cow not found")
def.drops = {
{name = "bbq:beef_raw", chance = 1, min = 1, max = 3},
{name = "mobs:leather", chance = 1, min = 1, max = 2},
}
end
-------------------------------
--MAKE YEAST NATURALLY OCCURING
-------------------------------
for i = 1, 5 do
minetest.override_item("default:grass_"..i, {drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'bbq:yeast'},rarity = 8},
{items = {'default:grass_1'}},
}
}})
end
minetest.override_item("default:junglegrass", {drop = {
max_items = 1,
items = {
{items = {'farming:seed_cotton'},rarity = 8},
{items = {'bbq:yeast'},rarity = 8},
{items = {'default:junglegrass'}},
}
}})
-----------------------------------------------
--MAKE VESSEL TYPE ITEMS WORK WITH VESSEL SHELF
-----------------------------------------------
if minetest.registered_items["bucket:bucket_empty"] ~= nil then
minetest.override_item("bucket:bucket_empty", {
groups = {vessel=1},
})
minetest.override_item("bucket:bucket_water", {
groups = {vessel=1},
})
minetest.override_item("bucket:bucket_river_water", {
groups = {vessel=1},
})
minetest.override_item("bucket:bucket_lava", {
groups = {vessel=1},
})
end
if minetest.registered_items["mobs:bucket_milk"] ~= nil then
minetest.override_item("mobs:bucket_milk", {
groups = {vessel=1},
})
end
----------------------
--UPGRADING WOOD FUELS
----------------------
minetest.register_craft({
type = "fuel",
recipe = "default:junglewood",
burntime = 100,
})
minetest.register_craft({
type = "fuel",
recipe = "default:acacia_wood",
burntime = 92,
})
minetest.register_craft({
type = "fuel",
recipe = "default:wood",
burntime = 85,
})
minetest.register_craft({
type = "fuel",
recipe = "default:pine_wood",
burntime = 75,
})
minetest.register_craft({
type = "fuel",
recipe = "default:aspen_wood",
burntime = 65,
})
minetest.register_craft({
type = "fuel",
recipe = "stairs:slab_junglewood",
burntime = 12,
})
minetest.register_craft({
type = "fuel",
recipe = "stairs:slab_acacia_wood",
burntime = 11,
})
minetest.register_craft({
type = "fuel",
recipe = "stairs:slab_wood",
burntime = 10,
})
minetest.register_craft({
type = "fuel",
recipe = "stairs:slab_pine_wood",
burntime = 8,
})
minetest.register_craft({
type = "fuel",
recipe = "stairs:slab_aspen_wood",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "default:stick",
burntime = 2,
})

389
mods/BBQ/propane_grill.lua Normal file
View file

@ -0,0 +1,389 @@
--
-- Formspecs
--
function default.get_propane_grill_active_formspec(fuel_percent, item_percent)
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":bbq_smoker_fire_fg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_smoker_arrow_fg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
function default.get_propane_grill_inactive_formspec()
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
--
-- Node callback functions that are the same for active and inactive propane_grill
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "propane_grill is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function propane_grill_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local cookable, cooked
local fuel
local update = true
while elapsed > 0 and update do
update = false
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
local el = math.min(elapsed, fuel_totaltime - fuel_time)
if cookable then -- fuel lasts long enough, adjust el to cooking duration
el = math.min(el, cooked.time - src_time)
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The propane_grill is currently active and has enough fuel
fuel_time = fuel_time + el
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + el
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
end
else
-- Item could not be cooked: probably missing fuel
update = true
end
end
else
-- propane_grill ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
end
elapsed = elapsed - el
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist[1]:is_empty() then
src_time = 0
end
--
-- Update formspec, infotext and node
--
local formspec
local item_state
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
if item_percent > 100 then
item_state = "100% (output full)"
else
item_state = item_percent .. "%"
end
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive"
local result = false
if fuel_totaltime ~= 0 then
active = "active"
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = default.get_propane_grill_active_formspec(fuel_percent, item_percent)
swap_node(pos, "bbq:propane_grill_active")
-- make sure timer restarts automatically
result = true
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
formspec = default.get_propane_grill_inactive_formspec()
swap_node(pos, "bbq:propane_grill")
-- stop timer on the inactive propane_grill
minetest.get_node_timer(pos):stop()
end
local infotext = "propane_grill " .. active .. "\n(Item: " .. item_state ..
"; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
-------------------
-- Node definitions
-------------------
minetest.register_node("bbq:propane_grill", {
description = "Propane Grill",
tiles = {
"bbq_propane_grill_top.png", "bbq_propane_grill_bottom.png",
"bbq_propane_grill_side.png", "bbq_propane_grill_side.png",
"bbq_propane_grill_back.png", "bbq_propane_grill_front.png",
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- main body
{-0.5, 0.25, -0.5, 0.5, 0.68, 0.5}, -- top
},
},
sunlight_propagates = true,
groups = {cracky=2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
on_timer = propane_grill_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.get_propane_grill_inactive_formspec())
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('fuel', 1 )
inv:set_size('dst', 9)
end,
on_metadata_inventory_move = function(pos)
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether propane_grill can burn or not.
minetest.get_node_timer(pos):start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "bbq:propane_grill"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_node("bbq:propane_grill_active", {
description = "Propane Grill",
tiles = {
"bbq_propane_grill_top.png", "bbq_propane_grill_bottom.png",
{
image = "bbq_propane_grill_side_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_propane_grill_side_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
"bbq_propane_grill_back.png",
{
image = "bbq_propane_grill_front_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- main body
{-0.5, 0.25, -0.5, 0.5, 0.68, 0.5}, -- top
},
},
sunlight_propagates = true,
drop = "bbq:propane_grill",
groups = {cracky=2, not_in_creative_inventory=1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_timer = propane_grill_node_timer,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})

View file

@ -0,0 +1,391 @@
--
-- Formspecs
--
function default.get_propane_grill_pro_active_formspec(fuel_percent, item_percent)
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":bbq_smoker_fire_fg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_smoker_arrow_fg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
function default.get_propane_grill_pro_inactive_formspec()
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
--
-- Node callback functions that are the same for active and inactive propane_grill_pro
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "propane_grill_pro is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function propane_grill_pro_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local cookable, cooked
local fuel
local update = true
while elapsed > 0 and update do
update = false
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
local el = math.min(elapsed, fuel_totaltime - fuel_time)
if cookable then -- fuel lasts long enough, adjust el to cooking duration
el = math.min(el, cooked.time - src_time)
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The propane_grill_pro is currently active and has enough fuel
fuel_time = fuel_time + el
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + el
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
end
else
-- Item could not be cooked: probably missing fuel
update = true
end
end
else
-- propane_grill_pro ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
end
elapsed = elapsed - el
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist[1]:is_empty() then
src_time = 0
end
--
-- Update formspec, infotext and node
--
local formspec
local item_state
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
if item_percent > 100 then
item_state = "100% (output full)"
else
item_state = item_percent .. "%"
end
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive"
local result = false
if fuel_totaltime ~= 0 then
active = "active"
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = default.get_propane_grill_pro_active_formspec(fuel_percent, item_percent)
swap_node(pos, "bbq:propane_grill_pro_active")
-- make sure timer restarts automatically
result = true
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
formspec = default.get_propane_grill_pro_inactive_formspec()
swap_node(pos, "bbq:propane_grill_pro")
-- stop timer on the inactive propane_grill_pro
minetest.get_node_timer(pos):stop()
end
local infotext = "propane_grill_pro " .. active .. "\n(Item: " .. item_state ..
"; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
-------------------
-- Node definitions
-------------------
minetest.register_node("bbq:propane_grill_pro", {
description = "Propane Grill Pro",
tiles = {
"bbq_propane_grill_top.png", "bbq_propane_grill_bottom.png",
"bbq_propane_grill_side.png", "bbq_propane_grill_side.png",
"bbq_propane_grill_back.png", "bbq_propane_grill_front.png",
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1, 0.2, -0.5, 1, 0.25, 0.5},-- wings
{-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- main body
{-0.5, 0.25, -0.5, 0.5, 0.68, 0.5}, -- top
},
},
sunlight_propagates = true,
groups = {cracky=2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
on_timer = propane_grill_pro_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.get_propane_grill_pro_inactive_formspec())
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('fuel', 1 )
inv:set_size('dst', 9)
end,
on_metadata_inventory_move = function(pos)
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether propane_grill_pro can burn or not.
minetest.get_node_timer(pos):start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "bbq:propane_grill_pro"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_node("bbq:propane_grill_pro_active", {
description = "Propane Grill Pro",
tiles = {
"bbq_propane_grill_top.png", "bbq_propane_grill_bottom.png",
{
image = "bbq_propane_grill_side_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_propane_grill_side_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
"bbq_propane_grill_back.png",
{
image = "bbq_propane_grill_front_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1, 0.2, -0.5, 1, 0.25, 0.5},-- wings
{-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, -- main body
{-0.5, 0.25, -0.5, 0.5, 0.68, 0.5}, -- top
},
},
sunlight_propagates = true,
drop = "bbq:propane_grill_pro",
groups = {cracky=2, not_in_creative_inventory=1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_timer = propane_grill_pro_node_timer,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})

BIN
mods/BBQ/screenshot1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 KiB

BIN
mods/BBQ/screenshot2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

427
mods/BBQ/smoker.lua Normal file
View file

@ -0,0 +1,427 @@
--
-- Formspecs
--
function default.get_smoker_active_formspec(fuel_percent, item_percent)
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":bbq_smoker_fire_fg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_smoker_arrow_fg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
function default.get_smoker_inactive_formspec()
return "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[context;src;2.75,0.5;1,1;]"..
"list[context;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;bbq_smoker_fire_bg.png]"..
"image[3.75,1.5;1,1;gui_smoker_arrow_bg.png^[transformR270]"..
"list[context;dst;4.8,0.5;3,3;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[context;dst]"..
"listring[current_player;main]"..
"listring[context;src]"..
"listring[current_player;main]"..
"listring[context;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
end
--
-- Node callback functions that are the same for active and inactive smoker
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "smoker is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function smoker_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist, fuellist
local cookable, cooked
local fuel
local update = true
while elapsed > 0 and update do
update = false
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
local el = math.min(elapsed, fuel_totaltime - fuel_time)
if cookable then -- fuel lasts long enough, adjust el to cooking duration
el = math.min(el, cooked.time - src_time)
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The smoker is currently active and has enough fuel
fuel_time = fuel_time + el
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + el
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
end
else
-- Item could not be cooked: probably missing fuel
update = true
end
end
else
-- smoker ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
update = true
fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time)
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
end
elapsed = elapsed - el
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist[1]:is_empty() then
src_time = 0
end
--
-- Update formspec, infotext and node
--
local formspec
local item_state
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
if item_percent > 100 then
item_state = "100% (output full)"
else
item_state = item_percent .. "%"
end
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive"
local result = false
if fuel_totaltime ~= 0 then
active = "active"
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = default.get_smoker_active_formspec(fuel_percent, item_percent)
swap_node(pos, "bbq:smoker_active")
-- make sure timer restarts automatically
result = true
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
formspec = default.get_smoker_inactive_formspec()
swap_node(pos, "bbq:smoker")
-- stop timer on the inactive smoker
minetest.get_node_timer(pos):stop()
end
local infotext = "smoker " .. active .. "\n(Item: " .. item_state ..
"; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
-------------------
-- Node definitions
-------------------
minetest.register_node("bbq:smoker", {
description = "Smoker",
tiles = {
"bbq_smoker_texture_bottom.png", --top
"bbq_smoker_texture_bottom.png^[transformFY", --bottom
"bbq_smoker_texture_side.png", --right side
"bbq_smoker_texture_side.png^[transformFX", --left side
"bbq_smoker_texture_back.png", --back
"bbq_smoker_texture.png", --front
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1.5, -0.03, -0.3, -1.0, 0.35, 0.093},-- smokebox
{-1.0, -0.08, -0.5, 0.5, 0.6, 0.435 }, -- main body
{-0.375, 0.095, -.52, -0.16, 0.155, -0.54}, -- main handle
{-1.37, 0.095, -.32, -1.16, 0.155, -0.34}, -- smokebox handle
{-0.345, 0.115, -.5, -0.325, 0.135, -0.55}, -- left handle bolt
{-0.21, 0.115, -.5, -0.19, 0.135, -0.55}, -- right handle bolt
{-1.32, 0.115, -.35, -1.34, 0.135, -0.3}, -- left smokebox handle bolt
{-1.19, 0.115, -.35, -1.21, 0.135, -0.3}, -- right smokebox handle bolt
{0.5, 0.18, .10, 0.99, 0.30, 0.22}, -- chimney x
{0.87, 0.18, .10, 0.99, .62, 0.22}, -- chimney y
-- {0.93, 0.62, .10, 0.93, .9, 0.22}, -- chimney smoke
-- {0.87, 0.62, .16, 0.99, .9, 0.16}, -- chimney smoke
{-0.8, -0.5, -0.3, -0.9, -0.08, -0.4}, -- front leftleg
{0.3, -0.5, -0.3, 0.4, -0.08, -0.4}, -- front right leg
{-0.8, -0.5, 0.3, -0.9, -0.08, 0.4}, -- front leftleg
{0.3, -0.5, 0.3, 0.4, -0.08, 0.4}, -- front right leg
},
},
sunlight_propagates = true,
groups = {cracky=2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
on_timer = smoker_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.get_smoker_inactive_formspec())
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('fuel', 1 )
inv:set_size('dst', 9)
end,
on_metadata_inventory_move = function(pos)
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether smoker can burn or not.
minetest.get_node_timer(pos):start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "bbq:smoker"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_node("bbq:smoker_active", {
description = "smoker",
tiles = {
"bbq_smoker_texture_bottom.png", --top
"bbq_smoker_texture_bottom.png^[transformFY", --bottom
{
image = "bbq_smoker_texture_side_animated.png", --right side
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_smoker_texture_side_animated.png^[transformFX", --left side
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_smoker_texture_back_animated.png", --back
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
{
image = "bbq_smoker_texture_animated.png", --front
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
},
},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-1.5, -0.03, -0.3, -1.0, 0.35, 0.093},-- smokebox
{-1.0, -0.08, -0.5, 0.5, 0.6, 0.435 }, -- main body
{-0.375, 0.095, -.52, -0.16, 0.155, -0.54}, -- main handle
{-1.37, 0.095, -.32, -1.16, 0.155, -0.34}, -- smokebox handle
{-0.345, 0.115, -.5, -0.325, 0.135, -0.55}, -- left handle bolt
{-0.21, 0.115, -.5, -0.19, 0.135, -0.55}, -- right handle bolt
{-1.32, 0.115, -.35, -1.34, 0.135, -0.3}, -- left smokebox handle bolt
{-1.19, 0.115, -.35, -1.21, 0.135, -0.3}, -- right smokebox handle bolt
{0.5, 0.18, .10, 0.99, 0.30, 0.22}, -- chimney x
{0.87, 0.18, .10, 0.99, .62, 0.22}, -- chimney y
{0.93, 0.62, .10, 0.93, .9, 0.22}, -- chimney smoke
{0.87, 0.62, .16, 0.99, .9, 0.16}, -- chimney smoke
{-0.8, -0.5, -0.3, -0.9, -0.08, -0.4}, -- front leftleg
{0.3, -0.5, -0.3, 0.4, -0.08, -0.4}, -- front right leg
{-0.8, -0.5, 0.3, -0.9, -0.08, 0.4}, -- front leftleg
{0.3, -0.5, 0.3, 0.4, -0.08, 0.4}, -- front right leg
},
},
sunlight_propagates = true,
drop = "bbq:smoker",
groups = {cracky=2, not_in_creative_inventory=1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_timer = smoker_node_timer,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,006 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

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