New settings:

- bucket_use_clasic_recipe
- bucket_material_...

Small code cleanup
master
daretmavi 2021-01-10 18:10:43 +01:00
parent 01b9a4a013
commit 1f5e60aef7
3 changed files with 113 additions and 23 deletions

View File

@ -1,3 +1,12 @@
--------------------------------------------------
Ver. 5.0 [10.01.2021] DEVEL
Added settings:
bucket_use_clasic_recipe - use clasic recipe for bucket if true
bucket_material_... - settings for allowed materials
Some code cleanup
--------------------------------------------------
Ver. 4.1 [20.12.2020]

View File

@ -7,12 +7,23 @@ local S = minetest.get_translator("bucket")
-- bucket item definitions
bucket = {}
bucket.material = "default:steel_ingot"
bucket.empty = "bucket:bucket_empty"
bucket.water = "bucket:bucket_water_uni"
bucket.lava = "bucket:bucket_lava_uni"
bucket.default_material = "steel"
bucket.liquids = {}
-- standard bucket recipe (like in minecraft)
-- conflicts "Wood Empty Bucket" with farming "Wooden Bowl"
bucket.recipe_clasic ={
{"MATERIAL", "", "MATERIAL"},
{"", "MATERIAL", ""}
}
-- new recipe for bucket
bucket.recipe_new ={
{"MATERIAL", "", "MATERIAL"},
{"MATERIAL", "", "MATERIAL"},
{"MATERIAL", "MATERIAL", "MATERIAL"}
}
-- Bucket aliases - default bucket ist steel
minetest.register_alias("bucket", bucket.empty.."_"..bucket.default_material)
@ -26,17 +37,50 @@ minetest.register_alias("bucket:bucket_lava", bucket.lava.."_"..bucket.default_m
-- define bucket liquids and Liquid_name
dofile(minetest.get_modpath("bucket") .. "/bucket_liquids.lua")
--craft diferent types of bucket
-- craft diferent types of bucket
-- recipe can be anjustet for every material type
local craft_ingreds = {
wood = {"group:wood", "default_wood.png"},
stone = {"group:stone", "default_stone.png"},
steel = {"default:steel_ingot", "default_steel_block.png"},
bronze = {"default:bronze_ingot", "default_bronze_block.png"},
mese = {"default:mese_crystal", "default_mese_block.png"},
diamond = {"default:diamond", "default_diamond_block.png"},
gold = {"default:gold_ingot", "default_gold_block.png"}
wood = {"group:wood", "default_wood.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_wood", true)
},
stone = {"group:stone", "default_stone.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_stone", true)
},
steel = {"default:steel_ingot", "default_steel_block.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_steel", true)
},
bronze = {"default:bronze_ingot", "default_bronze_block.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_bronze", true)
},
mese = {"default:mese_crystal", "default_mese_block.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_mese", true)
},
diamond = {"default:diamond", "default_diamond_block.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_diamond", true)
},
gold = {"default:gold_ingot", "default_gold_block.png",
recipe = table.copy(bucket.recipe_clasic),
enabled = minetest.settings:get_bool("bucket_material_gold", true)
}
}
-- set new recipe if enabled
local use_clasic_recipe = minetest.settings:get_bool("bucket_use_clasic_recipe", true)
if not use_clasic_recipe then
for idx, mat in pairs(craft_ingreds) do
craft_ingreds[idx].recipe = table.copy(bucket.recipe_new)
end
end
minetest.log(dump(craft_ingreds))
-- according to source (liquid type) assign bucket with "bucket" liquid
-- with this you can override the mod setting
bucket.giving_back={
@ -54,30 +98,37 @@ bucket.giving_back={
-- load settingtypes
local get_flowing_liquid = minetest.settings:get_bool("bucket_get_flowing", true)
-- craft empty bucket
minetest.register_craft({
output = bucket.empty.." 1",
recipe = {
{bucket.material, "", bucket.material},
{"", bucket.material, ""},
}
})
-- Function relpaces all "MATERIAL" with new/real material definition new_mat
local function replace_recipe_material(recipe_def, new_mat)
local recipe_mat = table.copy(recipe_def)
for r_row_idx, r_row in pairs(recipe_def) do
for r_idx, r_mat in pairs(r_row) do
if r_mat=="MATERIAL" then
recipe_mat[r_row_idx][r_idx]=new_mat
end
end
end
minetest.log(dump(recipe_mat))
return recipe_mat
end
-- Register empty buckets crafting recipes
for name, mat in pairs(craft_ingreds) do
-- replace "MATERIAL" with correct one
local bucket_recipe = replace_recipe_material(mat.recipe, mat[1])
-- register new empty bucket crafting recipe
minetest.register_craft({
output = "bucket:bucket_empty".."_"..name,
recipe = {
{mat[1], "", mat[1]},
{"", mat[1], ""},
}
recipe = table.copy(bucket_recipe)
})
end
-- for compatibility
minetest.register_alias("bucket:bucket_empty", "bucket:bucket_empty_steel")
-- protection - from original bucket mod
-- not analysed yet
local function check_protection(pos, name, text)
if minetest.is_protected(pos, name) then
minetest.log("action", (name ~= "" and name or "A mod")
@ -193,6 +244,7 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end
end
-- Register Empty buckets
for mat_name, mat in pairs(craft_ingreds) do
-- Capitalise first character

View File

@ -7,3 +7,32 @@ bucket_lava_flowing_range (Bucket lava flowing range) int 1
# If true, then liquid can be taken even from flowing one
# (not only from source)
bucket_get_flowing (Flowing liwuid can be taken) bool true
# Use "clasic" bucket recipe
# - This can interfere with farming mod Wood Empty Bucket = Wooden Bowl
# + X + - + X +
# + - + X + - +
#
# NEW Recipe
# + X + - + X +
# + X + - + X +
# + X + X + X +
bucket_use_clasic_recipe (Use clasic recipe for bucket) bool true
# Enabled buckettypes
[Bucket types]
# Enable steel bucket
bucket_material_steel (Enable steel bucket) bool true
# Enable wood bucket
bucket_material_wood (Enable wood bucket) bool true
# Enable stone bucket
bucket_material_stone (Enable stone bucket) bool true
# Enable bronze bucket
bucket_material_bronze (Enable bronze bucket) bool true
# Enable mese bucket
bucket_material_mese (Enable mese bucket) bool true
Enable diamond bucket
bucket_material_diamond (Enable diamond bucket) bool true
Enable gold bucket
bucket_material_gold (Enable gold bucket) bool true