Bucket water generation rewrite

New Settings
master^2
daretmavi 2021-02-09 00:18:00 +01:00
parent d0cce9f954
commit 4abf6465c3
4 changed files with 168 additions and 238 deletions

View File

@ -1,3 +1,23 @@
--------------------------------------------------
Ver. 7.0 [09.02.2021]
Bucket water generation rewrite
- better support for liquid definition from other mods
- river water bucket added back + setting to unify
- other mods ca unify with function "bucket.register_bucket_as_diffrent_liquid(source, flowing, destination_source, force_renew)"
- dynamic_liquid bettes support - no changes needed
New Settings
# Unify water and river water
# - taken river water is going to be changed to clasic water
bucket_unify_river_water (Unify river water) bool false
# Bucket liquid reverse interval
# - if bucket water gets in touch with original source or water+lava
# then if will be changet back to original source
# - in seconds
bucket_liquid_abm (Bucket liquid reserve interval) float 1.0
--------------------------------------------------
Ver. 6.2 [06.02.2021]

View File

@ -16,14 +16,15 @@ Liquid_name.lava.source = "default:lava_source"
Liquid_name.lava.flowing = "default:lava_flowing"
--bucket waret and lava
Liquid_name.bucket_prefix = "bucket_"
Liquid_name.bucket_prefix = "bucket_" --Prefix for bucket waters definition
-- default bucket water names - not used
Liquid_name.water.bucket_source = "bucket:bucket_water_source"
Liquid_name.water.bucket_flowing = "bucket:bucket_water_flowing"
Liquid_name.lava.bucket_source = "bucket:bucket_lava_source"
Liquid_name.lava.bucket_flowing = "bucket:bucket_lava_flowing"
--Bucket river water not used (not needed yet)
--Liquid_name.water.bucket_river_source = "bucket:bucket_river_water_source"
--Liquid_name.water.bucket_river_flowing = "bucket:bucket_river_water_flowing"
Liquid_name.water.bucket_river_source = "bucket:bucket_river_water_source"
Liquid_name.water.bucket_river_flowing = "bucket:bucket_river_water_flowing"
-- Liquid flowing range definitions (Default)
local bucket_water_range = 1
@ -32,6 +33,10 @@ local bucket_lava_range = 1
bucket_water_range = minetest.settings:get("bucket_water_flowing_range") or bucket_water_range
bucket_lava_range = minetest.settings:get("bucket_lava_flowing_range") or bucket_lava_range
-- ABM interval for revert bucket water/lava type to original
local bucket_liquid_abm = tonumber(minetest.settings:get("bucket_liquid_abm") or 1)
-- Registred nodes according to aliases
local water_source_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[Liquid_name.water.source]))
local water_flowing_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[Liquid_name.water.flowing]))
@ -41,23 +46,26 @@ local lava_flowing_def = minetest.deserialize(minetest.serialize(minetest.regist
-- NEW liquid definitions "bucket" liquid
-- run to gegister ner bucket water type
function bucket.register_bucket_water(source, flowing, name, renewable)
local water_mod = source:split":"[1]
local water_mod = source:split":"[1] --get source mod name
local b_prefix = Liquid_name.bucket_prefix
-- check source mod of bucket definition
if water_mod == "default" or water_mod == "bucket" then
water_mod = "bucket"
water_mod = "bucket" -- if defined in this mod
else
b_prefix = b_prefix..water_mod.."_"
b_prefix = b_prefix..water_mod.."_" --defined from ther mod
end
-- Define new bucket water names
local source_name = b_prefix..source:split":"[2]
local flowing_name = b_prefix..flowing:split":"[2]
-- names wit mod prefix
Liquid_name.water[source_name]=water_mod..":"..source_name
Liquid_name.water[flowing_name]=water_mod..":"..flowing_name
-- Source water definition has to be used an changed
-- Source water definition has to be used and changed fot bucket water definition
local water_source_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[source]))
water_source_def.description = S("Bucket Water Source")
water_source_def.liquid_alternative_flowing = Liquid_name.water[flowing_name]
@ -66,14 +74,6 @@ function bucket.register_bucket_water(source, flowing, name, renewable)
water_source_def.liquid_origin = source -- NEW - information for ABM to get back to the original liquid after contact with it.
water_source_def.groups.bucket_liquid = 1
-- minetest.override_item(Liquid_name.water[source_name], {
-- description = S("Bucket Water Source"),
-- liquid_alternative_flowing = Liquid_name.water[flowing_name],
-- liquid_alternative_source = Liquid_name.water[source_name],
-- liquid_renewable = renewable,
-- liquid_origin = source, -- NEW - information for ABM to get back to the original liquid after contact with it.
-- })
-- For dynamic_liquid support
if minetest.get_modpath("dynamic_liquid") then
-- node is detroyed by lava, Lava source blocks will turn these blocks into steam.
@ -83,6 +83,7 @@ function bucket.register_bucket_water(source, flowing, name, renewable)
water_source_def.groups.dynamic_cools_lava_flowing = 1
end
-- Flowing water definition has to be used and changed fot bucket water definition
local water_flowing_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[flowing]))
water_flowing_def.description = S("Flowing Bucket Water")
water_flowing_def.liquid_alternative_flowing = Liquid_name.water[flowing_name]
@ -92,16 +93,6 @@ function bucket.register_bucket_water(source, flowing, name, renewable)
water_flowing_def.liquid_origin = flowing -- NEW - information for ABM to get back to the original liquid after contact with it.
water_flowing_def.groups.bucket_liquid = 1
-- minetest.override_item(Liquid_name.water[flowing_name], {
-- description = S("Flowing Bucket Water"),
-- liquid_alternative_flowing = Liquid_name.water[flowing_name],
-- liquid_alternative_source = Liquid_name.water[source_name],
-- liquid_range = bucket_water_range,
-- liquid_renewable = false,
-- liquid_origin = flowing, -- NEW - information for ABM to get back to the original liquid after contact with it.
-- })
-- minetest.registered_nodes[Liquid_name.water[flowing_name]].groups.bucket_liquid = 1
-- For dynamic_liquid support
if minetest.get_modpath("dynamic_liquid") then
-- in dynamic_liquid is flowing water not cooling lava
@ -109,63 +100,59 @@ function bucket.register_bucket_water(source, flowing, name, renewable)
-- node is detroyed by lava, Flowing lava will turn these blocks into steam
water_flowing_def.groups.dynamic_lava_source_destroys = 1
water_flowing_def.groups.dynamic_lava_flowing_destroys = 1
-- -- define bucket water as dynamic liquid
-- dynamic_liquid.liquid_abm(Liquid_name.water[source_name], Liquid_name.water[flowing_name], 1)
--
-- -- this new funktion is needed, because setting goups is not enough
-- -- not implemented in actrual version (12.12.2020) - musst be added, or use fork https://github.com/daretmavi/dynamic_liquid
-- -- check if add_to_water_nodes is in the mod dynamic_liquid available. _G is a global table on lua that stores every global function in it.
-- if _G["dynamic_liquid"]["add_to_water_nodes"] then
-- dynamic_liquid.add_to_water_nodes(Liquid_name.water[source_name], Liquid_name.water[flowing_name])
-- else
-- local Dyn_liq_error = S("Mod: dynamic_liquid is not changed. add_to_water_nodes function is missing! Lava colling will not work the same ways, as the default water-lava interaction works.")
-- minetest.log(Dyn_liq_error)
-- end
end
-- new water liquids are registered
minetest.register_node(Liquid_name.water[source_name], water_source_def)
minetest.register_node(Liquid_name.water[flowing_name], water_flowing_def)
-- minetest.log(dump(minetest.registered_nodes[Liquid_name.water[source_name]]))
-- minetest.log(dump(minetest.registered_nodes[Liquid_name.water[flowing_name]]))
minetest.register_abm({
label = "Water normalization",
nodenames = {Liquid_name.water[source_name], Liquid_name.water[flowing_name]},
neighbors = {source, flowing},
interval = 1.0, -- Run every 1 second
chance = 1, -- Select every 1 nod
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.log("ZASAH: "..dump(node))
if minetest.registered_nodes[node.name].liquid_origin ~= nil then
local pos = {x = pos.x, y = pos.y, z = pos.z}
minetest.set_node(pos, {name = minetest.registered_nodes[node.name].liquid_origin})
-- ABM to revert bucket water to original liquid
if bucket_liquid_abm > 0 then
minetest.register_abm({
label = "Water "..source_name.."-"..flowing_name.." normalization",
nodenames = {Liquid_name.water[source_name], Liquid_name.water[flowing_name]},
neighbors = {source, flowing, "group:lava"},
interval = bucket_liquid_abm, -- Run every 1 second
chance = 1, -- Select every 1 nod
action = function(pos, node, active_object_count, active_object_count_wider)
--minetest.log("ZASAH: "..dump(node))
if minetest.registered_nodes[node.name].liquid_origin ~= nil then
local pos = {x = pos.x, y = pos.y, z = pos.z}
minetest.set_node(pos, {name = minetest.registered_nodes[node.name].liquid_origin})
end
end
end
})
})
end
-- return new bucket liquid names
return {Liquid_name.water[source_name], Liquid_name.water[flowing_name]}
end
-- run to gegister ner bucket lava type
function bucket.register_bucket_lava(source, flowing, name, renewable)
local lava_mod = source:split":"[1]
local lava_mod = source:split":"[1] --get source mod name
local b_prefix = Liquid_name.bucket_prefix
-- check source mod of bucket definition
if lava_mod == "default" or lava_mod == "bucket" then
lava_mod = "bucket"
lava_mod = "bucket" -- if defined in this mod
else
b_prefix = b_prefix..lava_mod.."_"
b_prefix = b_prefix..lava_mod.."_" --defined from ther mod
end
-- Define new bucket lava names
local source_name = b_prefix..source:split":"[2]
local flowing_name = b_prefix..flowing:split":"[2]
-- names wit mod prefix
Liquid_name.lava[source_name]=lava_mod..":"..source_name
Liquid_name.lava[flowing_name]=lava_mod..":"..flowing_name
-- Source lava definition has to be used and changed fot bucket lava definition
local lava_source_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[Liquid_name.lava.source]))
lava_source_def.description = S("Bucket Lava Source")
lava_source_def.liquid_alternative_flowing = Liquid_name.lava[flowing_name]
@ -174,15 +161,7 @@ function bucket.register_bucket_lava(source, flowing, name, renewable)
lava_source_def.liquid_origin = source -- NEW - information for ABM to get back to the original liquid after contact with it.
lava_source_def.groups.bucket_liquid = 1
-- minetest.override_item(Liquid_name.lava[source_name], {
-- description = S("Bucket Lava Source"),
-- liquid_alternative_flowing = Liquid_name.lava[flowing_name],
-- liquid_alternative_source = Liquid_name.lava[flowing_name],
-- liquid_renewable = renewable,
-- liquid_origin = source, -- NEW - information for ABM to get back to the original liquid after contact with it.
-- })
-- minetest.registered_nodes[Liquid_name.lava[source_name]].groups.bucket_liquid = 1
-- Flowing lava definition has to be used and changed fot bucket lava definition
local lava_flowing_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[Liquid_name.lava.flowing]))
lava_flowing_def.description = S("Bucket Lava Source")
lava_flowing_def.liquid_alternative_flowing = Liquid_name.lava[flowing_name]
@ -192,121 +171,31 @@ function bucket.register_bucket_lava(source, flowing, name, renewable)
lava_flowing_def.liquid_origin = flowing -- NEW - information for ABM to get back to the original liquid after contact with it.
lava_flowing_def.groups.bucket_liquid = 1
-- minetest.override_item(Liquid_name.lava[flowing_name], {
-- description = S("Bucket Lava Source"),
-- liquid_alternative_flowing = Liquid_name.lava[flowing_name],
-- liquid_alternative_source = Liquid_name.lava[source_name],
-- liquid_range = bucket_lava_range,
-- liquid_renewable = false,
-- liquid_origin = flowing, -- NEW - information for ABM to get back to the original liquid after contact with it.
-- })
-- minetest.registered_nodes[Liquid_name.lava[flowing_name]].groups.bucket_liquid = 1
-- new lava liquids are registered
minetest.register_node(Liquid_name.lava[source_name], lava_source_def)
minetest.register_node(Liquid_name.lava[flowing_name], lava_flowing_def)
-- minetest.log(dump(minetest.registered_nodes[Liquid_name.lava[source_name]]))
-- minetest.log(dump(minetest.registered_nodes[Liquid_name.lava[flowing_name]]))
-- ABM to revert bucket lava to original liquid
if bucket_liquid_abm > 0 then
minetest.register_abm({
label = "Lava "..source_name.."-"..flowing_name.." normalization",
nodenames = {Liquid_name.lava[source_name], Liquid_name.lava[flowing_name]},
neighbors = {source, flowing, "group:water"},
interval = bucket_liquid_abm, -- Run every 1 second
chance = 1, -- Select every 1 nod
action = function(pos, node, active_object_count, active_object_count_wider)
--minetest.log("ZASAH lava: "..dump(node))
if minetest.registered_nodes[node.name].liquid_origin ~= nil then
local pos = {x = pos.x, y = pos.y, z = pos.z}
minetest.set_node(pos, {name = minetest.registered_nodes[node.name].liquid_origin})
end
end
})
end
-- return new bucket liquid names
return {Liquid_name.lava[source_name], Liquid_name.lava[flowing_name]}
end
--TODO Update ABM for new function
-- minetest.register_abm({
-- label = "Water normalization",
-- nodenames = {"group:bucket_liquid"},
-- neighbors = {"group:liquid"},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- minetest.log("ZASAH: "..dump(neighbors))
-- if minetest.registered_nodes[node.name].liquid_origin ~= nil then
--
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = minetest.registered_nodes[node.name].liquid_origin})
-- end
-- end
-- })
--
-- -- Change Bucket Water to normal "water_source" on contact with it
-- minetest.register_abm({
-- label = "Water Source normalization",
-- nodenames = {Liquid_name.water.bucket_source},
-- neighbors = {Liquid_name.water.source,
-- Liquid_name.water.flowing},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = Liquid_name.water.source})
-- end
-- })
--
-- --
-- minetest.register_abm({
-- label = "Water Flowing normalization",
-- nodenames = {Liquid_name.water.bucket_flowing},
-- neighbors = {Liquid_name.water.source,
-- Liquid_name.water.flowing},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = Liquid_name.water.flowing})
-- end
-- })
--
-- -- Change Bucket Water to normal "river_water_source" on contact with it
-- minetest.register_abm({
-- label = "River Water Source normalization",
-- nodenames = {Liquid_name.water.bucket_source},
-- neighbors = {Liquid_name.water.river_source,
-- Liquid_name.water.river_flowing},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = Liquid_name.water.river_source})
-- end
-- })
--
-- -- Change Bucket Lava to normal on contact with lava or water
-- minetest.register_abm({
-- label = "Lava Source normalization",
-- nodenames = {Liquid_name.lava.bucket_source},
-- neighbors = {Liquid_name.lava.source,
-- Liquid_name.lava.flowing,
-- Liquid_name.water.source,
-- Liquid_name.water.flowing,
-- Liquid_name.water.river_source,
-- Liquid_name.water.river_flowing,
-- Liquid_name.water.bucket_source,
-- Liquid_name.water.bucket_flowing},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = Liquid_name.lava.source})
-- end
-- })
--
-- -- Bucket flowing Lava to normal on contact with lava or water
-- minetest.register_abm({
-- label = "Lava Flowing normalization",
-- nodenames = {Liquid_name.lava.bucket_flowing},
-- neighbors = {Liquid_name.lava.source,
-- Liquid_name.lava.flowing,
-- Liquid_name.water.source,
-- Liquid_name.water.flowing,
-- Liquid_name.water.river_source,
-- Liquid_name.water.river_flowing,
-- Liquid_name.water.bucket_source},
-- interval = 1.0, -- Run every 1 second
-- chance = 1, -- Select every 1 nod
-- action = function(pos, node, active_object_count, active_object_count_wider)
-- local pos = {x = pos.x, y = pos.y, z = pos.z}
-- minetest.set_node(pos, {name = Liquid_name.lava.flowing})
-- end
-- })

135
init.lua
View File

@ -9,7 +9,7 @@ bucket = {}
bucket.empty = "bucket:bucket_empty" -- empty bucket name prefix
bucket.water = "bucket:bucket_water_uni" -- water bucket name prefix
bucket.water_river = "bucket:bucket_water_river" -- river water bucket name prefix -- TODO
bucket.water_river = "bucket:bucket_water_river" -- river water bucket name prefix
bucket.lava = "bucket:bucket_lava_uni" -- lava bucket name prefix
bucket.default = {} -- default bucket names
bucket.default_material = minetest.settings:get("bucket_default_type") or "steel" -- default material for bucket
@ -165,7 +165,7 @@ local function check_protection(pos, name, text)
end
-- ============================================================================
-- Register a new liquid
-- Register a new liquid (bucket.register_liquid)
-- source = name of the source node
-- flowing = name of the flowing node
-- itemname = name of the new bucket item (or nil if liquid is not takeable)
@ -177,7 +177,7 @@ end
-- force_renew = (optional) bool. Force the liquid source to renew if it has a
-- source neighbour, even if defined as 'liquid_renewable = false'.
-- Needed to avoid creating holes in sloping rivers.
-- giving_back = (NEW) defines the bucket to return
-- giving_back = (NEW) defines the bucket to return (optional, not tested)
-- This function can be called from any mod (that depends on bucket).
local function register_full_bucket(source, flowing, itemname, inventory_image, name,
@ -269,18 +269,19 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
force_renew = force_renew,
}
-- define all buckets (itemanames) for all materials
bucket.liquids[source].itemname = {} -- all buckets for defined source
for mat_name, mat in pairs(inv_images["materials"]) do
local bucket_itemname = itemname.."_"..mat_name
local bucket_itemname = itemname.."_"..mat_name --delivered itemname + material name
bucket.liquids[source].itemname[mat_name]=bucket_itemname
end
-- the same for flowing liquid
bucket.liquids[flowing] = bucket.liquids[source]
bucket.liquids[flowing] = bucket.liquids[source] -- the same for flowing liquid
-- generate bucket liquids
local bucket_liq
if minetest.registered_nodes[source] ~= nil then
if minetest.registered_nodes[source].groups.lava then
local bucket_liq -- for bucket liquid names {bucket source, bucket flowing}
if minetest.registered_nodes[source] ~= nil then -- if source really exists
if minetest.registered_nodes[source].groups.lava then -- check if it is lava liquid
-- create new bucket lava with reduced flowing
bucket_liq = bucket.register_bucket_lava(source, flowing, name, force_renew)
else
@ -289,9 +290,12 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end
end
-- bucket liquid names {bucket source, bucket flowing}
-- replaces the delivered source and flowing names
source = bucket_liq[1]
flowing = bucket_liq[2]
-- bucket liquids definition for new buket water/lava liquid
bucket.liquids[source] = {
source = source,
flowing = flowing,
@ -301,20 +305,21 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
bucket.liquids[source].itemname = {} -- all buckets for defined source
-- loop for all materials in inv_images
-- to define new full buckets with the delivered liquid (changed to bucket liquid)
for mat_name, mat in pairs(inv_images["materials"]) do
if mat["enabled"] then
local Mat_name = mat_name:gsub("^%l", string.upper)
local bucket_material_name = S(Mat_name)
local bucket_name = bucket_material_name.." "..name
local bucket_itemname = itemname.."_"..mat_name
giving_back = bucket.empty.."_"..mat_name
bucket.liquids[source].itemname[mat_name]=bucket_itemname
if mat["enabled"] then -- check if this material is enabled in settingtypes
local Mat_name_txt = mat_name:gsub("^%l", string.upper) --get material text
local bucket_material_name = S(Mat_name_txt) -- material text translated
local bucket_name = bucket_material_name.." "..name -- material + bucket name
local bucket_itemname = itemname.."_"..mat_name -- new bucket name
giving_back = bucket.empty.."_"..mat_name -- coresponding empty bucket
bucket.liquids[source].itemname[mat_name]=bucket_itemname -- add to bucket for this bucker source
-- different image creation ist defined for all material, or only liquid it in inventory_image
-- different image creation ist defined for all material
local bucket_inv_image
if type(inventory_image) == "string" then
-- inly one image was delivered - inventory_image = liquid
-- only one image was delivered - inventory_image = liquid (filling)
-- like from other mods
local bucket_fill_image = "("..inventory_image.."^[resize:16x16".."^[colorize:#fff:30^"..inv_images["fill"].."^[noalpha^[makealpha:0,255,0)"
bucket_inv_image = mat[2].."^[resize:16x16".."^[colorize:#fff:30^bucket_uni.png".."^[noalpha^[makealpha:0,255,0^"..bucket_fill_image
@ -334,6 +339,23 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
bucket.liquids[flowing] = bucket.liquids[source]
end
-- Use this function, if you want to change the defined liquid to destination_source
-- when taken in the bucket
-- like river water in this mod
-- destination_source is optional, default = standard water)
-- destination_source has to be defined first
function bucket.register_bucket_as_diffrent_liquid(source, flowing, destination_source, force_renew)
local destination_source = destination_source or Liquid_name.water.source
local force_renew = force_renew or false
bucket.liquids[source] = {
source = source,
flowing = flowing,
itemname = bucket.liquids[destination_source].itemname,
force_renew = force_renew,
}
bucket.liquids[flowing] = bucket.liquids[source]
end
-- ============================================================================
-- Register Empty buckets
@ -455,24 +477,7 @@ for mat_name, mat in pairs(craft_ingreds) do
end
-- River water source is 'liquid_renewable = false' to avoid horizontal spread
-- of water sources in sloping rivers that can cause water to overflow
-- riverbanks and cause floods.
-- River water source is instead made renewable by the 'force renew' option
-- used here.
bucket.register_liquid(
Liquid_name.water.river_source ,
Liquid_name.water.river_flowing,
bucket.water_river,
{empty = "bucket_uni.png", materials = craft_ingreds, fill = "bucket_uni_river_water.png"},
S("River Water Bucket"),
{tool = 1, water_bucket = 1},
false
)
-- original bucket - to take the original liquit sources
-- uses new bucket uni
-- define bucket for water source
bucket.register_liquid(
Liquid_name.water.source,
Liquid_name.water.flowing,
@ -483,6 +488,37 @@ bucket.register_liquid(
false
)
-- River water source is 'liquid_renewable = false' to avoid horizontal spread
-- of water sources in sloping rivers that can cause water to overflow
-- riverbanks and cause floods.
-- River water source is instead made renewable by the 'force renew' option
-- used here.
-- define bucket for river water source
Unify_river_water = minetest.settings:get_bool("bucket_unify_river_water", false) -- get setting
-- Special river water behavior according to setting
if Unify_river_water then -- take river water as normal water
bucket.register_bucket_as_diffrent_liquid(
Liquid_name.water.river_source,
Liquid_name.water.river_flowing,
Liquid_name.water.source,
false
)
else -- define new bucket for river water
bucket.register_liquid(
Liquid_name.water.river_source,
Liquid_name.water.river_flowing,
bucket.water_river,
{empty = "bucket_uni.png", materials = craft_ingreds, fill = "bucket_uni_river_water.png"},
S("River Water Bucket"),
{tool = 1, water_bucket = 1},
false
)
end
-- define bucket for lava source
bucket.register_liquid(
Liquid_name.lava.source,
Liquid_name.lava.flowing,
@ -493,31 +529,6 @@ bucket.register_liquid(
false
)
-- Unified bucket
-- every bucket will be change to this
-- TODO - treba ci netreba?
-- bucket.register_liquid(
-- Liquid_name.water.bucket_source,
-- Liquid_name.water.bucket_flowing,
-- bucket.water,
-- {empty = "bucket_uni.png", materials = craft_ingreds, fill = "bucket_uni_water.png"},
-- S("Water Bucket"),
-- {tool = 1, water_bucket = 1},
-- false
-- )
--
-- bucket.register_liquid(
-- Liquid_name.lava.bucket_source,
-- Liquid_name.lava.bucket_flowing,
-- bucket.lava,
-- {empty = "bucket_uni.png", materials = craft_ingreds, fill = "bucket_uni_lava.png"},
-- S("Lava Bucket"),
-- {tool = 1},
-- false
-- )
----
-- Add lava as fuel
for mat_name, mat in pairs(craft_ingreds) do
@ -562,4 +573,4 @@ if minetest.global_exists("dungeon_loot") then
end
end
minetest.log(dump(minetest.registered_abms))
--minetest.log(dump(minetest.registered_abms))

View File

@ -19,6 +19,16 @@ bucket_get_flowing (Flowing liwuid can be taken) bool true
# + X + X + X +
bucket_use_clasic_recipe (Use clasic recipe for bucket) bool true
# Unify water and river water
# - taken river water is going to be changed to clasic water
bucket_unify_river_water (Unify river water) bool false
# Bucket liquid reverse interval
# - if bucket water gets in touch with original source or water+lava
# then if will be changet back to original source
# - in seconds
bucket_liquid_abm (Bucket liquid reserve interval) float 1.0
# Enabled buckettypes
[Bucket types]