parent
d0cce9f954
commit
4abf6465c3
20
CHANGELOG
20
CHANGELOG
|
@ -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]
|
||||
|
||||
|
|
|
@ -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
135
init.lua
|
@ -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))
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Reference in New Issue