diff --git a/mods/ITEMS/mcl_cauldrons/cauldron_lava.lua b/mods/ITEMS/mcl_cauldrons/cauldron_lava.lua index 042551beb..596bfcca7 100644 --- a/mods/ITEMS/mcl_cauldrons/cauldron_lava.lua +++ b/mods/ITEMS/mcl_cauldrons/cauldron_lava.lua @@ -67,10 +67,6 @@ function BucketProxy.make_lava(old_itemstack, cauldron_node) return ItemStack("mcl_buckets:bucket_lava") end --- full lava cauldron + empty bucket = empty cauldron, lava bucket -BucketProxy:add_basic_rule("lava", true, BucketProxy.is_empty, nil, 0, BucketProxy.make_lava, BucketProxy.sound_lava) --- any lava cauldron + lava bucket = full lava cauldron, empty bucket (may waste bucket) -BucketProxy:add_basic_rule("lava", nil, BucketProxy.is_lava, "lava", true, "mcl_buckets:bucket_empty", BucketProxy.sound_lava) --- empty cauldron + lava bucket = full lava cauldron, empty bucket -BucketProxy:add_basic_rule(nil, 0, BucketProxy.is_lava, "lava", true, "mcl_buckets:bucket_empty", BucketProxy.sound_lava) + +BucketProxy:add_bucket_rules("lava", BucketProxy.is_lava, BucketProxy.make_lava, BucketProxy.sound_lava) diff --git a/mods/ITEMS/mcl_cauldrons/cauldron_river_water.lua b/mods/ITEMS/mcl_cauldrons/cauldron_river_water.lua index 5a0763a0b..c43722456 100644 --- a/mods/ITEMS/mcl_cauldrons/cauldron_river_water.lua +++ b/mods/ITEMS/mcl_cauldrons/cauldron_river_water.lua @@ -52,12 +52,8 @@ function BucketProxy.make_river_water(itemstack, cauldron_node) end end --- full river water cauldron + empty bucket -> empty cauldron, river water bucket -BucketProxy:add_basic_rule("river_water", 3, BucketProxy.is_empty, nil, 0, "mcl_buckets:bucket_river_water", BucketProxy.sound_water) --- any river water cauldron + river water bucket -> full river water cauldron, empty bucket (may waste bucket) -BucketProxy:add_basic_rule("river_water", nil, BucketProxy.is_river_water, "river_water", true, "mcl_buckets:bucket_empty", BucketProxy.sound_water) --- empty cauldron + river water bucket -> full river water cauldron, empty bucket -BucketProxy:add_basic_rule(nil, 0, BucketProxy.is_river_water, "river_water", true, "mcl_buckets:bucket_empty", BucketProxy.sound_water) + +BucketProxy:add_bucket_rules("river_water", BucketProxy.is_river_water, "mcl_buckets:bucket_river_water", BucketProxy.sound_water) @@ -74,13 +70,6 @@ function BottleProxy.make_river_water(old_itemstack, cauldron_node) return ItemStack("mcl_potions:river_water") end --- river water cauldron + empty bottle -> river water cauldron less 1, river water bottle -BottleProxy:add_basic_rule("river_water", 3, BottleProxy.is_empty, "river_water", 2, BottleProxy.make_river_water, BottleProxy.sound_water) -BottleProxy:add_basic_rule("river_water", 2, BottleProxy.is_empty, "river_water", 1, BottleProxy.make_river_water, BottleProxy.sound_water) -BottleProxy:add_basic_rule("river_water", 1, BottleProxy.is_empty, nil, 0, BottleProxy.make_river_water, BottleProxy.sound_water) --- empty cauldron + water bottle -> river water cauldron 1, empty bottle -BottleProxy:add_basic_rule(nil, 0, BottleProxy.is_river_water, "river_water", 1, BottleProxy.make_empty, BottleProxy.sound_water) --- river water cauldron + river water bottle -> river water cauldron plus 1, empty bottle -BottleProxy:add_basic_rule("river_water", 1, BottleProxy.is_river_water, "river_water", 2, BottleProxy.make_empty, BottleProxy.sound_water) -BottleProxy:add_basic_rule("river_water", 2, BottleProxy.is_river_water, "river_water", 3, BottleProxy.make_empty, BottleProxy.sound_water) + +BottleProxy:add_bottle_rules("river_water", BottleProxy.is_river_water, "mcl_potions:bottle_river_water", BottleProxy.sound_water) diff --git a/mods/ITEMS/mcl_cauldrons/doc/index.html b/mods/ITEMS/mcl_cauldrons/doc/index.html index d18e30be2..80347e3b7 100644 --- a/mods/ITEMS/mcl_cauldrons/doc/index.html +++ b/mods/ITEMS/mcl_cauldrons/doc/index.html @@ -62,7 +62,7 @@
generated by LDoc 1.4.6 -Last updated 2021-11-10 21:14:01 +Last updated 2021-11-12 11:20:21
diff --git a/mods/ITEMS/mcl_cauldrons/doc/modules/api.html b/mods/ITEMS/mcl_cauldrons/doc/modules/api.html index f8080e4da..ef762d2b2 100644 --- a/mods/ITEMS/mcl_cauldrons/doc/modules/api.html +++ b/mods/ITEMS/mcl_cauldrons/doc/modules/api.html @@ -898,7 +898,7 @@
generated by LDoc 1.4.6 -Last updated 2021-11-10 21:14:01 +Last updated 2021-11-12 11:20:21
diff --git a/mods/ITEMS/mcl_cauldrons/doc/modules/init.html b/mods/ITEMS/mcl_cauldrons/doc/modules/init.html index 912384e51..c19fc732e 100644 --- a/mods/ITEMS/mcl_cauldrons/doc/modules/init.html +++ b/mods/ITEMS/mcl_cauldrons/doc/modules/init.html @@ -281,7 +281,7 @@
generated by LDoc 1.4.6 -Last updated 2021-11-10 21:14:01 +Last updated 2021-11-12 11:20:21
diff --git a/mods/ITEMS/mcl_cauldrons/doc/modules/register.html b/mods/ITEMS/mcl_cauldrons/doc/modules/register.html index 565b0b3c8..74b21fb76 100644 --- a/mods/ITEMS/mcl_cauldrons/doc/modules/register.html +++ b/mods/ITEMS/mcl_cauldrons/doc/modules/register.html @@ -100,6 +100,10 @@ Rule's output_specifier callback for obtaining a water bucket. + BucketProxy:add_bucket_rules (substance, filled_input, filled_output, sound_specifier) + Patterned bucket rules. + + BottleProxy.is_empty (itemstack) Rule's input_constraint callback for empty bottle. @@ -120,6 +124,10 @@ Rule's output_specifier function for obtaining water bottle. + BottleProxy:add_bottle_rules (substance, filled_input, filled_output, sound_specifier) + Patterned bottle rules. + + BannerProxy.is_banner (itemstack) Rule's input_constraint function for banner. @@ -127,6 +135,10 @@ BannerProxy.wash_banner (old_itemstack, cauldron_node) Rule's output_specifier function for obtaining washed banner. + + BannerProxy:add_banner_rules (substance, sound_specifier) + Patterned banner rules. +

Tables

@@ -524,6 +536,37 @@ + +
+ + BucketProxy:add_bucket_rules (substance, filled_input, filled_output, sound_specifier) +
+
+ Patterned bucket rules.

+ +

Buckets fill to full, empty from full. + + +

Parameters:

+ + + + + +
@@ -658,6 +701,37 @@ + +
+ + BottleProxy:add_bottle_rules (substance, filled_input, filled_output, sound_specifier) +
+
+ Patterned bottle rules.

+ +

Bottles fill by 1 level, drain by 1 level, not wasted on full cauldron. + + +

Parameters:

+ + + + + +
@@ -713,6 +787,31 @@ + +
+ + BannerProxy:add_banner_rules (substance, sound_specifier) +
+
+ Patterned banner rules.

+ +

Banner washed in cauldron, reduces by 1 level, may waste washing (blank banner washable) + + +

Parameters:

+ + + + + +

Tables

@@ -942,7 +1041,7 @@
generated by LDoc 1.4.6 -Last updated 2021-11-10 21:14:01 +Last updated 2021-11-12 11:20:21
diff --git a/mods/ITEMS/mcl_cauldrons/register.lua b/mods/ITEMS/mcl_cauldrons/register.lua index 27c66d5e2..b89c3817a 100644 --- a/mods/ITEMS/mcl_cauldrons/register.lua +++ b/mods/ITEMS/mcl_cauldrons/register.lua @@ -365,12 +365,28 @@ function BucketProxy.make_water(old_itemstack, cauldron_node) end end --- full water cauldron + empty bucket -> empty cauldron, water bucket -BucketProxy:add_basic_rule("water", 3, BucketProxy.is_empty, nil, 0, "mcl_buckets:bucket_water", BucketProxy.sound_water) --- any water cauldron + water bucket -> full water cauldron, empty bucket (may waste bucket) -BucketProxy:add_basic_rule("water", nil, BucketProxy.is_water, "water", true, "mcl_buckets:bucket_empty", BucketProxy.sound_water) --- empty cauldron + water bucket -> full water cauldron, empty bucket -BucketProxy:add_basic_rule(nil, 0, BucketProxy.is_water, "water", true, "mcl_buckets:bucket_empty", BucketProxy.sound_water) + +--- Patterned bucket rules. +-- +-- Buckets fill to full, empty from full. +-- @param substance string : substance shared between bucket and cauldron +-- @param filled_input string/function : filled bucket given to cauldron +-- @param filled_output string/function : filled bucket taken from cauldron +-- @param sound_specifier string/function : rule's sound specifier +function BucketProxy:add_bucket_rules(substance, filled_input, filled_output, sound_specifier) + local empty = "mcl_buckets:bucket_empty" + local empty_output = "mcl_buckets:bucket_empty" + -- full stuff cauldron + empty bucket -> empty cauldron, full bucket + self:add_basic_rule(substance, true, empty, nil, 0, filled_output, sound_specifier) + -- any level stuff cauldron + stuff bucket -> full stuff cauldron, empty bucket (may waste bucket) + self:add_basic_rule(substance, nil, filled_input, substance, true, empty_output, sound_specifier) + -- empty cauldron + stuff bucket -> full stuff cauldron, empty bucket + self:add_basic_rule(nil, 0, filled_input, substance, true, empty_output, sound_specifier) + -- other combinations -> do nothing (no interaction) +end + + +BucketProxy:add_bucket_rules("water", BucketProxy.is_water, "mcl_buckets:bucket_water", BucketProxy.sound_water) ------- @@ -432,15 +448,30 @@ function BottleProxy.make_water(old_itemstack, cauldron_node) return ItemStack("mcl_potions:water") end --- water cauldron + empty bottle -> water cauldron less 1, water bottle -BottleProxy:add_basic_rule("water", 3, BottleProxy.is_empty, "water", 2, BottleProxy.make_water, BottleProxy.sound_water) -BottleProxy:add_basic_rule("water", 2, BottleProxy.is_empty, "water", 1, BottleProxy.make_water, BottleProxy.sound_water) -BottleProxy:add_basic_rule("water", 1, BottleProxy.is_empty, nil, 0, BottleProxy.make_water, BottleProxy.sound_water) --- empty cauldron + water bottle -> water cauldron 1, empty bottle -BottleProxy:add_basic_rule(nil, 0, BottleProxy.is_water, "water", 1, BottleProxy.make_empty, BottleProxy.sound_water) --- water cauldron + water bottle -> water cauldron plus 1, empty bottle -BottleProxy:add_basic_rule("water", 1, BottleProxy.is_water, "water", 2, BottleProxy.make_empty, BottleProxy.sound_water) -BottleProxy:add_basic_rule("water", 2, BottleProxy.is_water, "water", 3, BottleProxy.make_empty, BottleProxy.sound_water) +--- Patterned bottle rules. +-- +-- Bottles fill by 1 level, drain by 1 level, not wasted on full cauldron. +-- @param substance string : substance shared between bottle and cauldron. +-- @param filled_input string/function : filled bottle given to cauldron +-- @param filled_output string/function : filled bottle taken from cauldron +-- @param sound_specifier string/function : rule's sound specifier +function BottleProxy:add_bottle_rules(substance, filled_input, filled_output, sound_specifier) + local empty_input = self.is_empty + local empty_output = self.make_empty + -- stuff cauldron + empty bottle -> stuff cauldron less 1, water bottle + self:add_basic_rule(substance, 3, empty_input, substance, 2, filled_output, sound_specifier) + self:add_basic_rule(substance, 2, empty_input, substance, 1, filled_output, sound_specifier) + self:add_basic_rule(substance, 1, empty_input, nil, 0, filled_output, sound_specifier) + -- empty cauldron + stuff bottle -> stuff cauldron 1, empty bottle + self:add_basic_rule(nil, 0, filled_input, substance, 1, empty_output, sound_specifier) + -- stuff cauldron + stuff bottle -> stuff cauldron plus 1, empty bottle + self:add_basic_rule(substance, 1, filled_input, substance, 2, empty_output, sound_specifier) + self:add_basic_rule(substance, 2, filled_input, substance, 3, empty_output, sound_specifier) + -- full cauldron + stuff bottle -> do nothing (do not waste bottle) +end + + +BottleProxy:add_bottle_rules("water", BottleProxy.is_water, BottleProxy.make_water, BottleProxy.sound_water) ------- @@ -485,11 +516,20 @@ function BannerProxy.wash_banner(old_itemstack, cauldron_node) return washed_itemstack end --- water cauldron any + banner -> water cauldron less 1, washed banner -BannerProxy:add_basic_rule("water", 3, BannerProxy.is_banner, "water", 2, BannerProxy.wash_banner, "mcl_potions_bottle_pour") -BannerProxy:add_basic_rule("water", 2, BannerProxy.is_banner, "water", 1, BannerProxy.wash_banner, "mcl_potions_bottle_pour") -BannerProxy:add_basic_rule("water", 1, BannerProxy.is_banner, nil, 0, BannerProxy.wash_banner, "mcl_potions_bottle_pour") +--- Patterned banner rules. +-- +-- Banner washed in cauldron, reduces by 1 level, may waste washing (blank banner washable) +-- @param substance string : substance consumed from cauldron +-- @param sound_specifier string/function : rule's sound specifier +function BannerProxy:add_banner_rules(substance, sound_specifier) + self:add_basic_rule(substance, 3, self.is_banner, substance, 2, self.wash_banner, sound_specifier) + self:add_basic_rule(substance, 2, self.is_banner, substance, 1, self.wash_banner, sound_specifier) + self:add_basic_rule(substance, 1, self.is_banner, nil, 0, self.wash_banner, sound_specifier) +end + + +BannerProxy:add_banner_rules("water", "mcl_potions_bottle_pour")