Files
mcpacker/mcpacker/pack/mysteriousisland/addplantspawns.py
T

389 lines
12 KiB
Python

from mcpacker.model.altitude import Altitude
from mcpacker.model.ecology.biomefilter import BiomeFilter as BF
from mcpacker.model.flora.plantspawn import PlantSpawn
from mcpacker.model.flora.plantspawnbuilder import PlantSpawnBuilder
from mcpacker.model.modpack import ModPack
from mcpacker.model.resourceid import ResourceId
import mcpacker.model.altitude as AL
import mcpacker.model.ecology.flora as FL
import mcpacker.model.ecology.geology as GE
import mcpacker.model.ecology.heat as HE
import mcpacker.model.ecology.humidity as HU
import mcpacker.model.ecology.soil as SO
import mcpacker.model.ecology.water as WA
import mcpacker.model.scarcity as SC
# Functions ########################################################################################
def addPlantSpawns(pack:ModPack):
plants = pack.world.plants
b = PlantSpawnBuilder(pack.world.plantSpawns)
# Crop Patches #############################################################
b.start(plants["athelas"])
b.altitude = AL.span(AL.LOWLANDS, AL.HILLS)
b.biomeFilters = BF([FL.CANOPY, HE.TEMPERATE])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["beetroot"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.FOREST, HE.BOREAL, SO.ACIDIC])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["bellpepper"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET, WA.INLAND])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["blueberry"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), HE.BOREAL])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["brownmushroom"])
b.altitude = AL.span(AL.SOIL, AL.ALPINE)
b.biomeFilters = [
BF([(FL.CANOPY, FL.FOREST), (HE.TEMPERATE, HE.BOREAL), (SO.LOAMY, SO.CLAYEY)], [WA.OCEAN]),
BF([HU.WET], [HE.FROZEN, WA.OCEAN, WA.RIVER]),
BF([SO.FUNGAL]),
]
b.scarcity = SC.COMMON
b.save("")
b.start(plants["cabbage"])
b.altitude = AL.HILLS
b.biomeFilters = BF([(HE.SUBTROPICAL, HE.TEMPERATE), SO.SANDY, WA.COAST])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["carrot"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF(
[(FL.FOREST, FL.CLEARING), HE.TEMPERATE, SO.LOAMY], [ResourceId.parse("flower_forest")],
)
b.scarcity = SC.COMMON
b.save("")
b.start(plants["coffee"])
b.altitude = AL.span(AL.HILLS, AL.ALPINE)
b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["corn"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, (SO.LOAMY, SO.SANDY)])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["cotton"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, HU.DRY, (SO.LOAMY, SO.SANDY)])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["currant"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), (HE.BOREAL, HE.FROZEN)])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["cranberry"])
b.altitude = AL.DUNES
b.biomeFilters = BF([HU.WET, SO.PEATY])
b.scarcity = SC.UNCOMMON
b.save("")
# NOTE: Due to a bug in Supplementaries, flax can *only* be planted on sand, despite the actual
# plant requiring an entirely different soil. Therefore, we're imaginging *this* so-called
# "flax" as a fiberous, desert-dwelling cousin.
b.start(plants["flax"])
b.altitude = AL.DUNES
b.biomeFilters = BF([FL.BARREN, HU.DRY, SO.SANDY])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["hamimelon"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, HU.DRY, (SO.LOAMY, SO.SANDY)])
b.scarcity = SC.RARE
b.save("")
b.start(plants["hemp"])
b.altitude = AL.span(AL.DUNES, AL.UPLANDS)
b.biomeFilters = BF(
[FL.FIELD, HE.TEMPERATE, HU.DAMP, SO.LOAMY], [ResourceId.parse("sunflower_plains")]
),
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["lemon"])
b.altitude = AL.UPLANDS
b.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, HU.DRY])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["melon"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["onion"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([FL.FOREST, HE.TEMPERATE, HU.DAMP, SO.ACIDIC])
b.scarcity = SC.SPARSE
b.save("")
# NOTE: Due to a bug in Fruits Delight, pineapple can *only* be planted on sand: despite this
# in now way reflecting the plant's actual ecology. As such, we have to imagine these as
# a more cactus-like cousin of actual pineapples.
b.start(plants["pineapple"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.BARREN, HE.TROPICAL, HU.DRY, SO.SANDY])
b.scarcity = SC.SPARSE
# TODO: add sand as substrate in addplants.py
b.save("")
b.start(plants["potato"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([FL.FOREST, HE.BOREAL, HU.DAMP, SO.ACIDIC])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["pumpkin"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.FIELD, HE.TEMPERATE, SO.LOAMY])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["redmushroom"])
b.altitude = AL.span(AL.SOIL, AL.ALPINE)
b.biomeFilters = [
BF([(FL.CANOPY, FL.FOREST), (HE.TEMPERATE, HE.BOREAL), (SO.LOAMY, SO.CLAYEY)]),
BF([HU.WET], [HE.FROZEN, WA.OCEAN, WA.RIVER]),
BF([SO.FUNGAL]),
]
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["rice"])
b.altitude = AL.SURFACE
b.biomeFilters = BF([(HE.SUBTROPICAL, HE.TEMPERATE), (WA.RIVER, WA.SWAMP)])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["sugarcane"])
b.altitude = AL.DUNES
b.biomeFilters = BF([(HE.TROPICAL, HE.TEMPERATE), (WA.RIVER, WA.SWAMP)])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["sunflower"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([ResourceId.parse("sunflower_plains")])
b.scarcity = SC.CARPET
b.save("")
b.start(plants["tomato"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["wheat"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.FIELD, HE.TEMPERATE, HU.DAMP, SO.LOAMY])
b.scarcity = SC.COMMON
b.save("")
# Flower Patches ###########################################################
b.start(plants["allium"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([FL.FOREST, HE.TEMPERATE, HU.DAMP, SO.ACIDIC])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["azurebluet"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.FIELD, (HE.TEMPERATE, HE.BOREAL), HU.DAMP, (SO.LOAMY, SO.PEATY)])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["blueorchid"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET])
b.scarcity = SC.RARE
b.save("")
b.start(plants["cornflower"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.FIELD, HE.TEMPERATE, (SO.LOAMY, SO.PEATY)])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["daisy"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.FIELD, (HE.TEMPERATE, HE.BOREAL)])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["dandelion"])
b.altitude = AL.span(AL.DUNES, AL.HILLS)
b.biomeFilters = BF(
[(FL.CLEARING, FL.FIELD)],
[HE.FROZEN, HU.WET, SO.FUNGAL, SO.ROCKY, ResourceId.parse("flower_forest")]
)
b.scarcity = SC.COMMON
b.save("")
b.start(plants["lilac"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.FOREST, HE.TEMPERATE, HU.DAMP, SO.LOAMY])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["lily"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.FOREST, (HE.TEMPERATE, HE.BOREAL), HU.DAMP, SO.ACIDIC])
b.scarcity = SC.RARE
b.save("")
b.start(plants["peony"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.CLEARING, HE.TEMPERATE, HU.DAMP, SO.ROCKY])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["poppy"])
b.altitude = AL.span(AL.DUNES, AL.UPLANDS)
b.biomeFilters = BF(
[FL.FIELD, (HE.SUBTROPICAL, HE.TEMPERATE), (HU.DRY, HU.DAMP)],
[SO.FUNGAL]
),
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["rose_black"])
b.altitude = AL.HILLS
b.biomeFilters = BF([FL.CANOPY, HE.TEMPERATE])
b.scarcity = SC.RARE
b.save("")
b.start(plants["rose_bush"])
b.altitude = AL.span(AL.UPLANDS, AL.ALPINE)
b.biomeFilters = BF([FL.FOREST, (HE.TEMPERATE, HE.BOREAL), SO.LOAMY])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["tulip_orange"])
b.altitude = AL.span(AL.DUNES, AL.LOWLANDS)
b.biomeFilters = BF([ResourceId.parse("flower_forest")])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["tulip_pink"])
b.altitude = AL.span(AL.DUNES, AL.LOWLANDS)
b.biomeFilters = BF([ResourceId.parse("flower_forest")])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["tulip_red"])
b.altitude = AL.span(AL.DUNES, AL.LOWLANDS)
b.biomeFilters = BF([ResourceId.parse("flower_forest")])
b.scarcity = SC.COMMON
b.save("")
b.start(plants["tulip_white"])
b.altitude = AL.span(AL.DUNES, AL.LOWLANDS)
b.biomeFilters = BF([ResourceId.parse("flower_forest")])
b.scarcity = SC.UNCOMMON
b.save("")
# Trees ####################################################################
b.start(plants["apple"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF(
[(FL.FOREST, FL.CLEARING), HE.TEMPERATE, SO.LOAMY],
[ResourceId.parse("flower_forest")],
)
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["bayberry"])
b.altitude = AL.span(AL.DUNES, AL.UPLANDS)
b.biomeFilters = BF([HE.TEMPERATE, (SO.ROCKY, SO.SANDY), WA.COAST])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["durian"])
b.altitude = AL.HILLS
b.biomeFilters = BF([FL.within(FL.CANOPY, FL.CLEARING), HE.TROPICAL, HU.WET, SO.ACIDIC])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["fig"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([HE.SUBTROPICAL, HU.DRY, SO.SANDY], [FL.BARREN])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["hawberry"])
b.altitude = AL.span(AL.UPLANDS, AL.HILLS)
b.biomeFilters = BF([(FL.FOREST, FL.CLEARING), HE.TEMPERATE, (SO.ACIDIC, SO.LOAMY)])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["lychee"])
b.altitude = AL.UPLANDS
b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["mango"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF(
[FL.within(FL.CANOPY, FL.CLEARING), HE.TROPICAL, (HU.DAMP, HU.WET), SO.ACIDIC]
)
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["mangosteen"])
b.altitude = AL.UPLANDS
b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET, SO.ACIDIC])
b.scarcity = SC.UNUSUAL
b.save("")
b.start(plants["orange"])
b.altitude = AL.LOWLANDS
b.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, HU.DRY])
b.scarcity = SC.SPARSE
b.save("")
b.start(plants["peach"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.CLEARING, HE.TEMPERATE, HU.DAMP, SO.ROCKY])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["pear"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.CLEARING, HE.TEMPERATE, HU.DAMP, (SO.ACIDIC, SO.LOAMY)])
b.scarcity = SC.UNCOMMON
b.save("")
b.start(plants["persimmon"])
b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS)
b.biomeFilters = BF([FL.FOREST, HE.TEMPERATE, SO.LOAMY])
b.scarcity = SC.UNCOMMON
b.save("")