diff --git a/mcpacker/model/core/flora/companion.py b/mcpacker/model/core/flora/companion.py new file mode 100644 index 0000000..688c8db --- /dev/null +++ b/mcpacker/model/core/flora/companion.py @@ -0,0 +1,10 @@ +from mcpacker.model.core.flora.plant import Plant + + +# Class ############################################################################################ + +class Companion: + + def __init__(self, plant:Plant, weight:int): + self.plant = plant + self.weight = weight diff --git a/mcpacker/model/core/flora/companion_test.py b/mcpacker/model/core/flora/companion_test.py new file mode 100644 index 0000000..992ecfe --- /dev/null +++ b/mcpacker/model/core/flora/companion_test.py @@ -0,0 +1,7 @@ +import mcpacker.model.core.flora.companion + + +# Tests ############################################################################################ + +def test_syntax(): + pass diff --git a/mcpacker/model/core/flora/patch.py b/mcpacker/model/core/flora/patch.py index b857587..d8653b1 100644 --- a/mcpacker/model/core/flora/patch.py +++ b/mcpacker/model/core/flora/patch.py @@ -1,5 +1,6 @@ from collections.abc import Iterable from mcpacker.model.core.blockstate import BlockState +from mcpacker.model.core.flora.companion import Companion from mcpacker.model.core.flora.density import Density from mcpacker.model.core.flora.immersion import Immersion from mcpacker.model.core.flora.plant import Plant @@ -22,18 +23,26 @@ class Patch(Plant): density:Density=DE.THICK, radius:int=4, substrates:Iterable[ResourceId]|Iterable[str]|ResourceId|str|None=None, + companions:Iterable[Companion]|Companion|None=None, immersion:Immersion=IM.DRY, ): super().__init__(name) if isinstance(blocks, str) or isinstance(blocks, BlockState): blocks = [blocks] + + if not companions: + companions = [] + if isinstance(companions, Companion): + companions = [companions] + if not substrates: substrates = ["#minecraft:dirt"] if not isinstance(substrates, Iterable): substrates = [substrates] self.blocks = [BlockState.parse(b) for b in blocks] + self.companions = list(companions) self.density = density self.immersion = immersion self.radius = radius @@ -43,6 +52,7 @@ class Patch(Plant): return ( "Patch(" f"blocks={self.blocks!r}, " + f"companions={self.companions!r}, " f"density={self.density!r}, " f"immersion={self.immersion!r}, " f"radius={self.radius!r}, " @@ -56,8 +66,8 @@ class Patch(Plant): The value models repeated random placement within a circular area until the expected fraction of successful placements (`coverage`) for the patch's density is reached. It - accounts for both failed placements (controlled by `successRate`) and duplicate hits on - already–filled blocks. + accounts for both for the presumed rate of successful placements (controlled by + `successRate`) and duplicate hits on already–filled blocks. The relationship is derived from the expected coverage equation: diff --git a/mcpacker/pack/mysteriousisland/adddisabledfeatures.py b/mcpacker/pack/mysteriousisland/adddisabledfeatures.py index 1cf8a6d..452e8f4 100644 --- a/mcpacker/pack/mysteriousisland/adddisabledfeatures.py +++ b/mcpacker/pack/mysteriousisland/adddisabledfeatures.py @@ -9,7 +9,7 @@ def addDisabledFeatures(pack:ModPack): def add(resourceText:str): pack.disabledFeatures.append(ResourceId.parse(resourceText)) - # Disable Vanilla ore generation + # Disable vanilla ore generation add("minecraft:ore_coal_lower") add("minecraft:ore_coal_upper") add("minecraft:ore_copper_large") @@ -30,3 +30,61 @@ def addDisabledFeatures(pack:ModPack): add("minecraft:ore_lapis") add("minecraft:ore_redstone_lower") add("minecraft:ore_redstone") + + # Disable vanilla plant spawning + add("minecraft:flower_default") + add("minecraft:flower_flower_forest") + add("minecraft:flower_forest_flowers") + add("minecraft:flower_meadow") + add("minecraft:flower_plain") + add("minecraft:flower_plains") + add("minecraft:flower_swamp") + add("minecraft:flower_warm") + add("minecraft:forest_flowers") + add("minecraft:patch_berry_bush") + add("minecraft:patch_berry_common") + add("minecraft:patch_berry_rare") + add("minecraft:patch_melon_sparse") + add("minecraft:patch_melon") + add("minecraft:patch_pumpkin") + add("minecraft:patch_sugar_cane_badlands") + add("minecraft:patch_sugar_cane_desert") + add("minecraft:patch_sugar_cane_swamp") + add("minecraft:patch_sugar_cane") + add("minecraft:patch_sunflower") + + # Disable mod plant spawning + add("corn_delight:patch_wild_corn") + add("farmersdelight:patch_brown_mushroom_colony") + add("farmersdelight:patch_red_mushroom_colony") + add("farmersdelight:patch_wild_beetroots") + add("farmersdelight:patch_wild_cabbages") + add("farmersdelight:patch_wild_carrots") + add("farmersdelight:patch_wild_onions") + add("farmersdelight:patch_wild_potatoes") + add("farmersdelight:patch_wild_rice") + add("farmersdelight:patch_wild_tomatoes") + add("fruitsdelight:blueberry_bush") + add("fruitsdelight:cranberry_bush") + add("fruitsdelight:hamimelon") + add("fruitsdelight:lemon_tree") + add("fruitsdelight:pineapple") + add("fruitsdelight:tree/apple_tree") + add("fruitsdelight:tree/bayberry_tree") + add("fruitsdelight:tree/durian_tree") + add("fruitsdelight:tree/fig_tree") + add("fruitsdelight:tree/hawberry_tree") + add("fruitsdelight:tree/kiwi_tree") + add("fruitsdelight:tree/lychee_tree") + add("fruitsdelight:tree/mango_tree") + add("fruitsdelight:tree/mangosteen_tree") + add("fruitsdelight:tree/orange_tree") + add("fruitsdelight:tree/peach_tree") + add("fruitsdelight:tree/pear_tree") + add("fruitsdelight:tree/persimmon_tree") + add("immersive_healing:medica_herb_block_spawning") + add("realistic_wheat:wild_wheat_g") + add("rusticdelight:wild_bell_peppers_placed") + add("rusticdelight:wild_coffee_placed") + add("rusticdelight:wild_cotton_placed") + add("supplementaries:wild_flax")