commit
5075acbd3d
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
README.md
16
README.md
|
@ -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`
|
||||
|
||||
-----
|
||||
|
||||
|
|
|
@ -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
156
init.lua
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
Loading…
Reference in New Issue