Merge branch 'devel' into 'master'

Devel

See merge request daretmavi/bucket-lite!12
master
daretmavi 2021-02-09 21:06:40 +00:00
commit 5075acbd3d
8 changed files with 299 additions and 198 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

@ -4,7 +4,7 @@
Fork of **Minetest Game mod: bucket**
- only one bucket for all water types
- only one bucket for water and river water types (with bucket_unify_river_water=true)
- flowing is only one block to prevent flooding with one bucket
- If "bucket water" gets in contact with normal water or river water, then the bucket water changes to this type.
- If "bucket lava" gets in contact with water, or default lava, the bucket lava changes to default type - this can result in lava flooding. Just don't mess up with lava :)
@ -14,10 +14,11 @@ Fork of **Minetest Game mod: bucket**
**Working with other mods:**
**dynamic_liquid** - actually works (good enough)
- dynamic_liquid
- If you want better support, some changes are needed:
- see my fork https://github.com/daretmavi/dynamic_liquid (no warranty)
- water_life
- swaz
## Behavior
@ -150,6 +151,13 @@ Minetest: https://www.minetest.net/
`bucket_getlava_gold (Enable gold bucket) bool false`
**Unify water and river water**
`bucket_unify_river_water (Unify river water) bool false`
**Bucket liquid reverse interval**
`bucket_liquid_abm (Bucket liquid reserve interval) float 1.0`
-----

View File

@ -16,13 +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_" --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
@ -31,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]))
@ -38,149 +44,158 @@ local lava_source_def = minetest.deserialize(minetest.serialize(minetest.registe
local lava_flowing_def = minetest.deserialize(minetest.serialize(minetest.registered_nodes[Liquid_name.lava.flowing]))
-- NEW liquid definitions "bucket" liquid
--minetest.log(dump(minetest.registered_nodes[Liquid_name.water.source]))
minetest.register_node(Liquid_name.water.bucket_source, water_source_def)
minetest.override_item(Liquid_name.water.bucket_source, {
description = S("Bucket Water Source"),
liquid_alternative_flowing = Liquid_name.water.bucket_flowing,
liquid_alternative_source = Liquid_name.water.bucket_source,
liquid_renewable = false,
})
-- 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.
minetest.registered_nodes[Liquid_name.water.bucket_source].groups.dynamic_lava_source_destroys = 1
-- node cools lava
minetest.registered_nodes[Liquid_name.water.bucket_source].groups.dynamic_cools_lava_source = 1
minetest.registered_nodes[Liquid_name.water.bucket_source].groups.dynamic_cools_lava_flowing = 1
end
minetest.register_node(Liquid_name.water.bucket_flowing, water_flowing_def)
minetest.override_item(Liquid_name.water.bucket_flowing, {
description = S("Flowing Bucket Water"),
liquid_alternative_flowing = Liquid_name.water.bucket_flowing,
liquid_alternative_source = Liquid_name.water.bucket_source,
liquid_range = bucket_water_range,
liquid_renewable = false,
})
-- For dynamic_liquid support
if minetest.get_modpath("dynamic_liquid") then
-- in dynamic_liquid is flowing water not cooling lava
minetest.registered_nodes[Liquid_name.water.bucket_flowing].groups.cools_lava = 0
-- node is detroyed by lava, Flowing lava will turn these blocks into steam
minetest.registered_nodes[Liquid_name.water.bucket_flowing].groups.dynamic_lava_source_destroys = 1
minetest.registered_nodes[Liquid_name.water.bucket_flowing].groups.dynamic_lava_flowing_destroys = 1
-- gedining bucket water as dynamic liquid
dynamic_liquid.liquid_abm(Liquid_name.water.bucket_source, Liquid_name.water.bucket_flowing, 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.bucket_source, Liquid_name.water.bucket_flowing)
-- run to gegister ner bucket water type
function bucket.register_bucket_water(source, flowing, name, renewable)
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" -- if defined in this mod
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)
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 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]
water_source_def.liquid_alternative_source = Liquid_name.water[source_name]
water_source_def.liquid_renewable = 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
-- 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.
water_source_def.groups.dynamic_lava_source_destroys = 1
-- node cools lava
water_source_def.groups.dynamic_cools_lava_source = 1
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]
water_flowing_def.liquid_alternative_source = Liquid_name.water[source_name]
water_flowing_def.liquid_range = bucket_water_range
water_flowing_def.liquid_renewable = false
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
-- For dynamic_liquid support
if minetest.get_modpath("dynamic_liquid") then
-- in dynamic_liquid is flowing water not cooling lava
water_flowing_def.groups.cools_lava = 0
-- 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
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]]))
-- 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
-- return new bucket liquid names
return {Liquid_name.water[source_name], Liquid_name.water[flowing_name]}
end
minetest.register_node(Liquid_name.lava.bucket_source, lava_source_def)
minetest.override_item(Liquid_name.lava.bucket_source, {
description = S("Bucket Lava Source"),
liquid_alternative_flowing = Liquid_name.lava.bucket_flowing,
liquid_alternative_source = Liquid_name.lava.bucket_source,
liquid_renewable = false,
})
-- run to gegister ner bucket lava type
function bucket.register_bucket_lava(source, flowing, name, renewable)
local lava_mod = source:split":"[1] --get source mod name
local b_prefix = Liquid_name.bucket_prefix
minetest.register_node(Liquid_name.lava.bucket_flowing, lava_flowing_def)
minetest.override_item(Liquid_name.lava.bucket_flowing, {
description = S("Bucket Lava Source"),
liquid_alternative_flowing = Liquid_name.lava.bucket_flowing,
liquid_alternative_source = Liquid_name.lava.bucket_source,
liquid_range = bucket_lava_range,
liquid_renewable = false,
})
-- 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})
-- check source mod of bucket definition
if lava_mod == "default" or lava_mod == "bucket" then
lava_mod = "bucket" -- if defined in this mod
else
b_prefix = b_prefix..lava_mod.."_" --defined from ther mod
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
})
-- Define new bucket lava names
local source_name = b_prefix..source:split":"[2]
local flowing_name = b_prefix..flowing:split":"[2]
-- 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
})
-- names wit mod prefix
Liquid_name.lava[source_name]=lava_mod..":"..source_name
Liquid_name.lava[flowing_name]=lava_mod..":"..flowing_name
-- 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
})
-- 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]
lava_source_def.liquid_alternative_source = Liquid_name.lava[flowing_name]
lava_source_def.liquid_renewable = 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
-- 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})
-- 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]
lava_flowing_def.liquid_alternative_source = Liquid_name.lava[source_name]
lava_flowing_def.liquid_range = bucket_lava_range
lava_flowing_def.liquid_renewable = false
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
-- 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

156
init.lua
View File

@ -9,6 +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
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
@ -164,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)
@ -176,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,
@ -244,16 +245,11 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
groups, force_renew, giving_back)
if itemname ~= nil then
bucket.liquids[source] = {
source = source,
flowing = flowing,
--itemname = itemname, -- buckets are defined later
force_renew = force_renew,
}
-- TODO - doplnit pre bucket water aj pre source obycany
local inv_images
if type(inventory_image) == "string" then
-- if only one image is defined (like from other mod)
-- material are from predefined craft_ingreds
@ -264,24 +260,66 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
-- suplied materials and images are used - has to be like in this mod defined
inv_images = inventory_image
end
-- bucket.liquids defined for original source and flowing
-- more or less dummy, real item definition is for bucket liquids
bucket.liquids[source] = {
source = source,
flowing = flowing,
--itemname = itemname, -- buckets are defined later
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 --delivered itemname + material name
bucket.liquids[source].itemname[mat_name]=bucket_itemname
end
bucket.liquids[flowing] = bucket.liquids[source] -- the same for flowing liquid
-- generate bucket liquids
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
-- create new bucket water with reduced flowing
bucket_liq = bucket.register_bucket_water(source, flowing, name, force_renew)
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,
--itemname = itemname, -- buckets are defined later
force_renew = force_renew,
}
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
@ -301,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
@ -421,8 +476,8 @@ for mat_name, mat in pairs(craft_ingreds) do
end
end
-- 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,
@ -433,22 +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.
bucket.register_liquid(
Liquid_name.water.river_source ,
Liquid_name.water.river_flowing,
bucket.water,
{empty = "bucket_uni.png", materials = craft_ingreds, fill = "bucket_uni_water.png"},
S("Water Bucket"),
{tool = 1, water_bucket = 1},
false
)
-- 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,
@ -459,30 +529,6 @@ bucket.register_liquid(
false
)
-- Unified bucket
-- every bucket will be change to this
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
@ -526,3 +572,5 @@ if minetest.global_exists("dungeon_loot") then
end
end
end
--minetest.log(dump(minetest.registered_abms))

View File

@ -1,9 +1,9 @@
# textdomain: bucket
Empty Bucket=prázdne vedro
Water Bucket=vedro s vodou
River Water Bucket=Vedro s vodou z rieky
River Water Bucket=vedro s vodou z rieky
Lava Bucket=vedro s lávou
Bucket Water Source= Zdroj vody z vedra
Bucket Water Source=Zdroj vody z vedra
Flowing Bucket Water=Tečúca voda z vedra
Bucket Lava Source=Zdroj lávy z vedra
Flowing Bucket Lava=Tečúca láva z vedra

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]

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.