diff --git a/mcpacker/format/report/biomereport.py b/mcpacker/format/report/biomereport.py index 50f7b03..fd098dc 100644 --- a/mcpacker/format/report/biomereport.py +++ b/mcpacker/format/report/biomereport.py @@ -1,7 +1,10 @@ -from mcpacker.model.modpack import ModPack -from mcpacker.model.geology.mineralspawn import MineralSpawn -from mcpacker.model.ecology.biome import Biome from mcpacker.format.report.composer import ReportComposer +from mcpacker.model.altitude import Altitude +from mcpacker.model.ecology.biome import Biome +from mcpacker.model.fauna.mob import Mob +from mcpacker.model.flora.plant import Plant +from mcpacker.model.geology.mineralspawn import MineralSpawn +from mcpacker.model.modpack import ModPack from pathlib import Path import mcpacker.model.altitude as AL @@ -41,34 +44,39 @@ class BiomeReport(ReportComposer): def _composeFaunaSection(self, biome:Biome): self.line().line("Fauna:").indent() - faunaLineCount = 0 + faunaLines:list[tuple[Mob, Altitude]] = [] for mob in self.pack.world.mobs: altitude = None for spawn in self.pack.world.mobSpawns: + if spawn.mob != mob: continue if not spawn.habitat.accepts(biome): continue if spawn.ecotype.location == LO.CAVE: continue altitude = AL.span(altitude or spawn.habitat.altitude, spawn.habitat.altitude) if altitude != None: - self.line(f"{mob.name} @ {altitude}") - faunaLineCount += 1 + faunaLines.append((mob, altitude)) - if faunaLineCount == 0: + for line in sorted(faunaLines, reverse=True, key=lambda p: (p[1].bottom, p[1].top)): + self.line(f"{line[0]} @ {line[1]}") + + if len(faunaLines) == 0: self.line("") self.outdent() # fauna def _composeFloraSection(self, biome:Biome): self.line().line("Flora:").indent() - floraLineCount = 0 + floraLines:list[tuple[Plant, Altitude]] = [] for spawn in self.pack.world.plantSpawns: if not spawn.habitat.accepts(biome): continue - self.line(f"{spawn.plant.name} @ {spawn.habitat.altitude}") - floraLineCount += 1 + floraLines.append((spawn.plant, spawn.habitat.altitude)) - if floraLineCount == 0: + for line in sorted(floraLines, reverse=True, key=lambda p: (p[1].bottom, p[1].top)): + self.line(f"{line[0]} @ {line[1]}") + + if len(floraLines) == 0: self.line("") self.outdent() # flora diff --git a/mcpacker/format/report/mobspawnreport.py b/mcpacker/format/report/mobspawnreport.py index 2b08523..0b545ea 100644 --- a/mcpacker/format/report/mobspawnreport.py +++ b/mcpacker/format/report/mobspawnreport.py @@ -1,4 +1,5 @@ from mcpacker.format.report.composer import ReportComposer +from mcpacker.model.ecology.biomefilter import BiomeFilter from mcpacker.model.ecology.biometrait import BiomeTrait from mcpacker.model.modpack import ModPack from pathlib import Path @@ -10,17 +11,17 @@ class MobSpawnReport(ReportComposer): def doCompose(self): for mob in self.pack.world.mobs: - self.line(f"Mob: {mob.name}") - self.indent() + self.line(f"Mob: {mob.name}").indent() needsDelimiter = False + habitat = None for spawn in self.pack.world.mobSpawns: if spawn.mob != mob: continue habitat = spawn.habitat ecotype = spawn.ecotype - self.line().text("Spawn: ").line(spawn.name) - self.indent() + self.line().text("Spawn: ").line(spawn.name).indent() + self.text("altitude: ").line(habitat.altitude) self.text("biomeFilter: ") self.line(" -OR- ".join(str(b) for b in habitat.biomeFilters)) @@ -29,7 +30,13 @@ class MobSpawnReport(ReportComposer): self.text("group: ").line(ecotype.group) self.text("location: ").line(ecotype.location) self.text("scarcity: ").line(ecotype.scarcity) - self.outdent() + self.outdent() # spawn - self.outdent() + if habitat: + self.line().line("Biomes:").indent() + for biome in BiomeFilter.collate(self.pack.world.biomes, habitat.biomeFilters): + self.line(biome) + self.outdent() # biomes + + self.outdent() # mob self.line() diff --git a/mcpacker/format/report/mobspawnreport_test.py b/mcpacker/format/report/mobspawnreport_test.py index 5b8c134..59c42b6 100644 --- a/mcpacker/format/report/mobspawnreport_test.py +++ b/mcpacker/format/report/mobspawnreport_test.py @@ -86,4 +86,6 @@ def test_write(report:MobSpawnReport): group: troup (3 to 6) location: outside scarcity: common + + Biomes: """).strip() diff --git a/mcpacker/model/ecology/biomefilter.py b/mcpacker/model/ecology/biomefilter.py index f6edf27..7407842 100644 --- a/mcpacker/model/ecology/biomefilter.py +++ b/mcpacker/model/ecology/biomefilter.py @@ -1,4 +1,3 @@ -from collections.abc import Sequence from collections.abc import Iterable from mcpacker.model.resourceid import ResourceId from mcpacker.model.ecology.biome import Biome @@ -43,8 +42,8 @@ class BiomeFilter: def __init__( self, - required:Sequence[BiomeTrait|ResourceId|Sequence[BiomeTrait]]|None=None, - prohibited:Sequence[BiomeTrait|ResourceId]|None=None, + required:Iterable[BiomeTrait|ResourceId|Iterable[BiomeTrait]]|None=None, + prohibited:Iterable[BiomeTrait|ResourceId]|None=None, ): self.required = list(required or []) self.prohibited = list(prohibited or []) diff --git a/mcpacker/model/habitat.py b/mcpacker/model/habitat.py index 1ba4678..47de738 100644 --- a/mcpacker/model/habitat.py +++ b/mcpacker/model/habitat.py @@ -54,6 +54,6 @@ class Habitat: def accepts(self, biome:Biome) -> bool: for biomeFilter in self.biomeFilters: - if not biomeFilter.accepts(biome): return False + if biomeFilter.accepts(biome): return True - return True + return False diff --git a/mcpacker/pack/mysteriousisland/addbiomes.py b/mcpacker/pack/mysteriousisland/addbiomes.py index cbba272..4638421 100644 --- a/mcpacker/pack/mysteriousisland/addbiomes.py +++ b/mcpacker/pack/mysteriousisland/addbiomes.py @@ -27,7 +27,7 @@ def addBiomes(pack:ModPack): )) biomes.add(Biome("helsinki", "minecraft:birch_forest", - FL.FOREST, GE.SEDIMENTARY, HE.TEMPERATE, HU.WET, SO.ACIDIC, WA.INLAND + FL.FOREST, GE.SEDIMENTARY, HE.TEMPERATE, HU.DAMP, SO.ACIDIC, WA.INLAND )) biomes.add(Biome("tokyo", "minecraft:cherry_grove", @@ -35,7 +35,7 @@ def addBiomes(pack:ModPack): )) biomes.add(Biome("boston", "minecraft:cold_ocean", - FL.BARREN, GE.SEDIMENTARY, HE.BOREAL, HU.DAMP, SO.CLAYEY, WA.OCEAN + FL.BARREN, GE.SEDIMENTARY, HE.BOREAL, HU.WET, SO.CLAYEY, WA.OCEAN )) biomes.add(Biome("freiburg", "minecraft:dark_forest", @@ -119,11 +119,11 @@ def addBiomes(pack:ModPack): )) biomes.add(Biome("sanfrancisco", "minecraft:ocean", - FL.BARREN, GE.IGNEOUS, HE.TEMPERATE, HU.DAMP, SO.SANDY, WA.OCEAN + FL.BARREN, GE.IGNEOUS, HE.TEMPERATE, HU.WET, SO.SANDY, WA.OCEAN )) biomes.add(Biome("minsk", "minecraft:old_growth_birch_forest", - FL.FOREST, GE.SEDIMENTARY, HE.TEMPERATE, HU.WET, SO.SANDY, WA.INLAND + FL.FOREST, GE.SEDIMENTARY, HE.TEMPERATE, HU.DAMP, SO.ACIDIC, WA.INLAND )) biomes.add(Biome("stpetersburg", "minecraft:old_growth_pine_taiga", @@ -187,11 +187,11 @@ def addBiomes(pack:ModPack): )) biomes.add(Biome("irkutsk", "minecraft:taiga", - FL.FOREST, GE.IGNEOUS, HE.BOREAL, HU.DAMP, SO.ACIDIC, WA.INLAND + FL.FOREST, GE.METAMORPHIC, HE.BOREAL, HU.DAMP, SO.ACIDIC, WA.INLAND )) biomes.add(Biome("nassau", "minecraft:warm_ocean", - FL.BARREN, GE.SEDIMENTARY, HE.TROPICAL, HU.SOAKED, SO.SANDY, WA.COAST + FL.BARREN, GE.SEDIMENTARY, HE.TROPICAL, HU.SOAKED, SO.SANDY, WA.OCEAN )) biomes.add(Biome("stirling", "minecraft:windswept_forest", diff --git a/mcpacker/pack/mysteriousisland/addmineralspawns.py b/mcpacker/pack/mysteriousisland/addmineralspawns.py index d1b3a0f..cd9a926 100644 --- a/mcpacker/pack/mysteriousisland/addmineralspawns.py +++ b/mcpacker/pack/mysteriousisland/addmineralspawns.py @@ -22,8 +22,8 @@ def addMineralSpawns(pack:ModPack): # Aluminum Family ########################################################## b.start(minerals["basalt"]) - b.biomeFilters = BF([HE.TROPICAL, HU.SOAKED, WA.INLAND]) - b.save("aluminum-indicator") + b.biomeFilters = BF([HE.TROPICAL, (HU.WET, HU.SOAKED)], [SO.FUNGAL, WA.OCEAN]) + b.save("aluminum-indicator-basalt") b.switch(minerals["aluminum"]) b.altitude = AL.span(AL.SUBSTRATE, AL.OVERBURDEN) @@ -48,7 +48,7 @@ def addMineralSpawns(pack:ModPack): b.start(minerals["tuff"]) b.biomeFilters = BF([GE.SEDIMENTARY, HE.TEMPERATE, HU.SOAKED]) - b.save("coal-indicator") + b.save("coal-indicator-tuff") b.switch(minerals["coal"]) b.altitude = AL.span(AL.SUBSTRATE, AL.OVERBURDEN) @@ -69,37 +69,61 @@ def addMineralSpawns(pack:ModPack): b.scarcity = SC.UNUSUAL b.save("coal-tertiary-iron") - # Copper Family ############################################################ + # Copper (oxidizedcap) Family ############################################## - b.start(minerals["diorite"]) - b.biomeFilters = BF([GE.SEDIMENTARY, HE.SUBTROPICAL, HU.DRY]) - b.save("copper-indicator") + b.start(minerals["sandstone"]) + b.biomeFilters = BF([GE.SEDIMENTARY, HE.SUBTROPICAL, (HU.ARID, HU.DRY)]) + b.save("copper-oxidizedcap-indicator-sandstone") b.switch(minerals["copper"]) b.altitude = AL.CRUST b.bulk = BU.MEDIUM b.scarcity = SC.UNCOMMON - b.save("copper-primary-copper") + b.save("copper-oxidizedcap-primary-copper") + + b.switch(minerals["iron"]) + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.scarcity = SC.UNUSUAL + b.save("copper-oxidizedcap-secondary-iron") + + b.switch(minerals["sulfur"]) + b.altitude = AL.CRUST + b.bulk = BU.TINY + b.scarcity = SC.RARE + b.save("copper-oxidizedcap-tertiary-sulfur") + + # Copper (porphyry) Family ################################################## + + b.start(minerals["diorite"]) + b.biomeFilters = BF([GE.IGNEOUS, (HE.SUBTROPICAL, HE.FROZEN), SO.ROCKY]) + b.save("copper-porphyry-indicator-diorite") + + b.switch(minerals["copper"]) + b.altitude = AL.CRUST + b.bulk = BU.MEDIUM + b.scarcity = SC.UNCOMMON + b.save("copper-porphyry-primary-copper") b.switch(minerals["redstone"]) b.altitude = AL.MANTLE b.bulk = BU.SMALL b.scarcity = SC.UNUSUAL - b.save("copper-secondary-redstone") + b.save("copper-porphyry-secondary-redstone") b.switch(minerals["gold"]) b.altitude = AL.span(AL.CRUST, AL.MANTLE) b.bulk = BU.TINY b.scarcity = SC.RARE - b.save("copper-tertiary-gold") + b.save("copper-porphyry-tertiary-gold") # Gold Family ############################################################## b.start(minerals["marble"]) - b.biomeFilters = BF([GE.METAMORPHIC, HE.BOREAL, HU.DRY]) - b.save("gold-indicator") + b.biomeFilters = BF([GE.METAMORPHIC, (HE.BOREAL, HE.FROZEN), SO.ROCKY]) + b.save("gold-indicator-marble") - b.start(minerals["quartz"]) + b.switch(minerals["quartz"]) b.altitude = AL.span(AL.CRAGS, AL.PEAKS) b.bulk = BU.MEDIUM b.scarcity = SC.SPARSE @@ -123,37 +147,65 @@ def addMineralSpawns(pack:ModPack): b.scarcity = SC.RARE b.save("gold-quarternary-emerald") - # Iron Family ############################################################## + # Iron (banded) Family ############################################################## - b.start(minerals["andesite"]) - b.biomeFilters = BF([GE.SEDIMENTARY, HE.TEMPERATE, HU.WET]) - b.save("iron-indicator") + b.start(minerals["diorite"]) + b.biomeFilters = BF( + [FL.within(FL.CANOPY, FL.CLEARING), GE.METAMORPHIC, (HE.BOREAL, HE.FROZEN)] + ) + b.save("iron-banded-indicator-diorite") - b.start(minerals["iron"]) - b.altitude = AL.CRUST - b.bulk = BU.MEDIUM - b.scarcity = SC.COMMON - b.save("iron-primary-iron") + b.switch(minerals["iron"]) + b.altitude = AL.span(AL.OVERBURDEN, AL.CRUST) + b.bulk = BU.LARGE + b.scarcity = SC.UNCOMMON + b.save("iron-banded-primary-iron") b.switch(minerals["quartz"]) - b.altitude = AL.CRUST - b.bulk = BU.SMALL + b.altitude = AL.span(AL.OVERBURDEN, AL.CRUST) + b.bulk = BU.MEDIUM b.scarcity = SC.UNUSUAL - b.save("iron-secondary-quartz") + b.save("iron-banded-secondary-quartz") b.switch(minerals["uranium"]) - b.altitude = AL.MANTLE - b.bulk = BU.TINY + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.scarcity = SC.UNCOMMON + b.save("iron-banded-tertiary-uranium") + + # Iron (bog) Family ############################################################## + + b.start(minerals["andesite"]) + b.biomeFilters = BF([FL.FOREST, GE.SEDIMENTARY, HE.TEMPERATE], [WA.SWAMP]) + b.save("iron-bog-indicator-andesite") + + b.switch(minerals["coal"]) + b.altitude = AL.SOIL + b.bulk = BU.SMALL + b.depositType = DE.DISK + b.scarcity = SC.UNCOMMON + b.save("iron-bog-primary-coal") + + b.switch(minerals["iron"]) + b.altitude = AL.span(AL.SOIL, AL.DUNES) + b.bulk = BU.MEDIUM + b.depositType = DE.DISK + b.scarcity = SC.UNCOMMON + b.save("iron-bog-secondary-iron") + + b.switch(minerals["uranium"]) + b.altitude = AL.SOIL + b.bulk = BU.SMALL b.scarcity = SC.RARE - b.save("iron-tertiary-uranium") + b.save("iron-bog-tertiary-uranium") # Lead Family ############################################################## b.start(minerals["dolostone"]) - b.biomeFilters = BF([GE.SEDIMENTARY, HE.TEMPERATE, HU.DAMP]) - b.save("lead-indicator") + b.biomeFilters = BF([FL.FIELD, GE.SEDIMENTARY, HE.TEMPERATE, HU.DAMP]) + b.save("lead-indicator-dolostone") - b.start(minerals["lead"]) + b.switch(minerals["lead"]) b.altitude = AL.CRUST b.bulk = BU.MEDIUM b.scarcity = SC.SPARSE @@ -171,6 +223,87 @@ def addMineralSpawns(pack:ModPack): b.scarcity = SC.UNUSUAL b.save("lead-tertiary-silver") + # Ocean (igneous) Family ################################################### + + b.start(minerals["basalt"]) + b.biomeFilters = BF([GE.IGNEOUS, WA.OCEAN]) + b.save("ocean-igneous-indicator-basalt") + + b.switch(minerals["tin"]) + b.altitude = AL.CRUST + b.bulk = BU.MEDIUM + b.depositType = DE.VEIN + b.scarcity = SC.UNCOMMON + b.save("ocean-igneous-primary-tin") + + b.switch(minerals["copper"]) + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.depositType = DE.VEIN + b.scarcity = SC.SPARSE + b.save("ocean-igneous-secondary-copper") + + b.switch(minerals["diamond"]) + b.altitude = AL.MANTLE + b.bulk = BU.TINY + b.depositType = DE.VEIN + b.scarcity = SC.RARE + b.save("ocean-igneous-tertiary-diamond") + + # Ocean (metamorphic) Family ############################################### + + b.start(minerals["marble"]) + b.biomeFilters = BF([GE.METAMORPHIC, WA.OCEAN]) + b.save("ocean-metamorphic-indicator-marble") + + b.switch(minerals["quartz"]) + b.altitude = AL.CRUST + b.bulk = BU.LARGE + b.depositType = DE.STRATA + b.scarcity = SC.COMMON + b.save("ocean-metamorphic-primary-quartz") + + b.switch(minerals["gold"]) + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.depositType = DE.VEIN + b.scarcity = SC.UNUSUAL + b.save("ocean-metamorphic-secondary-gold") + + b.switch(minerals["emerald"]) + b.altitude = AL.MANTLE + b.bulk = BU.TINY + b.depositType = DE.VEIN + b.scarcity = SC.RARE + b.save("ocean-metamorphic-tertiary-emerald") + + # Ocean (sedimentary) Family ############################################### + + b.start(minerals["sandstone"]) + b.biomeFilters = BF([GE.SEDIMENTARY, WA.OCEAN]) + b.save("ocean-sedimentary-indicator-sandstone") + + b.switch(minerals["iron"]) + b.altitude = AL.CRUST + b.bulk = BU.MEDIUM + b.depositType = DE.STRATA + b.scarcity = SC.UNCOMMON + b.save("ocean-sedimentary-primary-iron") + + b.switch(minerals["nickel"]) + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.depositType = DE.DISK + b.scarcity = SC.SPARSE + b.save("ocean-sedimentary-secondary-nickel") + + b.switch(minerals["lapis"]) + b.altitude = AL.CRUST + b.bulk = BU.LARGE + b.depositType = DE.VEIN + b.scarcity = SC.SPARSE + b.save("ocean-sedimentary-tertiary-lapis") + # Plutonic Family ########################################################## b.start(minerals["sulfur"]) @@ -187,7 +320,7 @@ def addMineralSpawns(pack:ModPack): b.start(minerals["chalk"]) b.biomeFilters = BF([GE.SEDIMENTARY, HE.TROPICAL, HU.ARID]) - b.save("salt-indicator") + b.save("salt-indicator-chalk") b.switch(minerals["salt"]) b.altitude = AL.span(AL.CRUST, AL.MANTLE) @@ -219,11 +352,35 @@ def addMineralSpawns(pack:ModPack): b.scarcity = SC.COMMON b.save("soil-special-peat") + # Silver Family ############################################################### + + b.start(minerals["diorite"]) + b.biomeFilters = BF([GE.METAMORPHIC, HE.TEMPERATE, HU.SOAKED]) + b.save("silver-indicator-diorite") + + b.switch(minerals["quartz"]) + b.altitude = AL.span(AL.CRUST, AL.LOWLANDS) + b.bulk = BU.MEDIUM + b.scarcity = SC.UNCOMMON + b.save("silver-primary-quartz") + + b.switch(minerals["lead"]) + b.altitude = AL.span(AL.SOIL, AL.OVERBURDEN) + b.bulk = BU.MEDIUM + b.scarcity = SC.SPARSE + b.save("silver-secondary-lead") + + b.switch(minerals["silver"]) + b.altitude = AL.CRUST + b.bulk = BU.SMALL + b.scarcity = SC.SPARSE + b.save("silver-tertiary-silver") + # Tin Family ############################################################### b.start(minerals["granite"]) - b.biomeFilters = BF([GE.IGNEOUS, HE.BOREAL, HU.DRY]) - b.save("tin-indicator") + b.biomeFilters = BF([GE.IGNEOUS, HE.BOREAL, SO.ROCKY]) + b.save("tin-indicator-granite") b.switch(minerals["tin"]) b.altitude = AL.CRUST @@ -237,6 +394,34 @@ def addMineralSpawns(pack:ModPack): b.scarcity = SC.UNUSUAL b.save("tin-secondary-copper") + # Volcanic Family ########################################################## + + b.start(minerals["basalt"]) + b.biomeFilters = BF([GE.IGNEOUS, SO.FUNGAL]) + b.save("volcanic-indicator-basalt") + + b.switch(minerals["sulfur"]) + b.altitude = AL.span(AL.LOWLANDS, AL.CRUST) + b.bulk = BU.MEDIUM + b.scarcity = SC.UNCOMMON + b.save("volcanic-primary-sulfur") + + b.switch(minerals["magma"]) + b.altitude = AL.span(AL.SOIL, AL.CRUST) + b.bulk = BU.MEDIUM + b.scarcity = SC.SPARSE + b.save("volcanic-secondary-magma") + + b.switch(minerals["diamond"]) + b.altitude = AL.span(AL.CRUST, AL.MANTLE) + b.bulk = BU.TINY + b.depositType = DE.VEIN + b.scarcity = SC.UNUSUAL + b.save("volcanic-tertiary-diamond") + +# TODO: All the Taiga biomes are missing mineral deposits +# TODO: Mushroom Fields doesn't have any minerals + """ vein strata diff --git a/mcpacker/pack/mysteriousisland/addmobs.py b/mcpacker/pack/mysteriousisland/addmobs.py index 08c7517..3a1a46a 100644 --- a/mcpacker/pack/mysteriousisland/addmobs.py +++ b/mcpacker/pack/mysteriousisland/addmobs.py @@ -9,58 +9,58 @@ import mcpacker.model.fauna.active as AC def addMobs(pack:ModPack): mobs = pack.world.mobs - mobs.add(Mob("animalplus:raccoon", AC.NOCTURNAL)) - mobs.add(Mob("animalplus:red_panda", AC.CREPUSCULAR)) - mobs.add(Mob("bearminimum:black_bear", AC.CREPUSCULAR)) - mobs.add(Mob("bearminimum:brown_bear", AC.CREPUSCULAR)) - mobs.add(Mob("cold_sweat:chameleon", AC.DIURNAL)) - mobs.add(Mob("crabbersdelight:crab", AC.CREPUSCULAR)) + mobs.add(Mob("animalplus:raccoon", AC.NOCTURNAL)) + mobs.add(Mob("animalplus:red_panda", AC.CREPUSCULAR)) + mobs.add(Mob("bearminimum:black_bear", AC.CREPUSCULAR)) + mobs.add(Mob("bearminimum:brown_bear", AC.CREPUSCULAR)) + mobs.add(Mob("cold_sweat:chameleon", AC.DIURNAL)) + mobs.add(Mob("crabbersdelight:crab", AC.CREPUSCULAR)) mobs.add(Mob("immersiveengineering:bulwark")) mobs.add(Mob("immersiveengineering:commando")) mobs.add(Mob("immersiveengineering:fusilier")) - mobs.add(Mob("minecraft:armadillo", AC.NOCTURNAL)) - mobs.add(Mob("minecraft:blaze", AC.ANY)) - mobs.add(Mob("minecraft:bogged", AC.MIDNIGHT)) - mobs.add(Mob("minecraft:camel", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:cat", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:cave_spider", AC.NOCTURNAL)) - mobs.add(Mob("minecraft:chicken", AC.DIURNAL)) - mobs.add(Mob("minecraft:cod", AC.DIURNAL)) - mobs.add(Mob("minecraft:cow", AC.DIURNAL)) - mobs.add(Mob("minecraft:creeper", AC.STORMY)) - mobs.add(Mob("minecraft:dolphin", AC.DIURNAL)) - mobs.add(Mob("minecraft:donkey", AC.DIURNAL)) - mobs.add(Mob("minecraft:drowned", AC.MIDNIGHT)) + mobs.add(Mob("minecraft:armadillo", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:blaze", AC.ANY)) + mobs.add(Mob("minecraft:bogged", AC.MIDNIGHT)) + mobs.add(Mob("minecraft:camel", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:cat", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:cave_spider", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:chicken", AC.DIURNAL)) + mobs.add(Mob("minecraft:cod", AC.DIURNAL)) + mobs.add(Mob("minecraft:cow", AC.DIURNAL)) + mobs.add(Mob("minecraft:creeper", AC.STORMY)) + mobs.add(Mob("minecraft:dolphin", AC.DIURNAL)) + mobs.add(Mob("minecraft:donkey", AC.DIURNAL)) + mobs.add(Mob("minecraft:drowned", AC.MIDNIGHT)) mobs.add(Mob("minecraft:enderman")) mobs.add(Mob("minecraft:evoker")) - mobs.add(Mob("minecraft:fox", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:frog", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:glow_squid", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:goat", AC.DIURNAL)) + mobs.add(Mob("minecraft:fox", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:frog", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:glow_squid", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:goat", AC.DIURNAL)) mobs.add(Mob("minecraft:hoglin")) - mobs.add(Mob("minecraft:horse", AC.DIURNAL)) - mobs.add(Mob("minecraft:husk", AC.MIDNIGHT)) - mobs.add(Mob("minecraft:llama", AC.DIURNAL)) - mobs.add(Mob("minecraft:magma_cube", AC.ANY)) - mobs.add(Mob("minecraft:mooshroom", AC.DIURNAL)) - mobs.add(Mob("minecraft:mule", AC.DIURNAL)) - mobs.add(Mob("minecraft:ocelot", AC.NOCTURNAL)) - mobs.add(Mob("minecraft:panda", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:parrot", AC.DIURNAL)) - mobs.add(Mob("minecraft:pig", AC.DIURNAL)) + mobs.add(Mob("minecraft:horse", AC.DIURNAL)) + mobs.add(Mob("minecraft:husk", AC.MIDNIGHT)) + mobs.add(Mob("minecraft:llama", AC.DIURNAL)) + mobs.add(Mob("minecraft:magma_cube", AC.ANY)) + mobs.add(Mob("minecraft:mooshroom", AC.DIURNAL)) + mobs.add(Mob("minecraft:mule", AC.DIURNAL)) + mobs.add(Mob("minecraft:ocelot", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:panda", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:parrot", AC.DIURNAL)) + mobs.add(Mob("minecraft:pig", AC.DIURNAL)) mobs.add(Mob("minecraft:pillager")) - mobs.add(Mob("minecraft:polar_bear", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:pufferfish", AC.DIURNAL)) - mobs.add(Mob("minecraft:rabbit", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:polar_bear", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:pufferfish", AC.DIURNAL)) + mobs.add(Mob("minecraft:rabbit", AC.CREPUSCULAR)) mobs.add(Mob("minecraft:ravager")) - mobs.add(Mob("minecraft:salmon", AC.DIURNAL)) - mobs.add(Mob("minecraft:sheep", AC.DIURNAL)) + mobs.add(Mob("minecraft:salmon", AC.DIURNAL)) + mobs.add(Mob("minecraft:sheep", AC.DIURNAL)) mobs.add(Mob("minecraft:skeleton")) - mobs.add(Mob("minecraft:slime", AC.RAINY)) - mobs.add(Mob("minecraft:spider", AC.NOCTURNAL)) - mobs.add(Mob("minecraft:squid", AC.CREPUSCULAR)) - mobs.add(Mob("minecraft:tropical_fish", AC.DIURNAL)) - mobs.add(Mob("minecraft:turtle", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:slime", AC.RAINY)) + mobs.add(Mob("minecraft:spider", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:squid", AC.CREPUSCULAR)) + mobs.add(Mob("minecraft:tropical_fish", AC.DIURNAL)) + mobs.add(Mob("minecraft:turtle", AC.NOCTURNAL)) mobs.add(Mob("minecraft:vex")) mobs.add(Mob("minecraft:villager")) mobs.add(Mob("minecraft:vindicator")) @@ -69,7 +69,7 @@ def addMobs(pack:ModPack): mobs.add(Mob("minecraft:witch")) mobs.add(Mob("minecraft:wither_skeleton")) mobs.add(Mob("minecraft:wither")) - mobs.add(Mob("minecraft:wolf", AC.NOCTURNAL)) + mobs.add(Mob("minecraft:wolf", AC.NOCTURNAL)) mobs.add(Mob("minecraft:zoglin")) - mobs.add(Mob("minecraft:zombie_villager", AC.MIDNIGHT)) + mobs.add(Mob("minecraft:zombie_villager", AC.MIDNIGHT)) mobs.add(Mob("minecraft:zombie")) diff --git a/mcpacker/pack/mysteriousisland/addmobspawns.py b/mcpacker/pack/mysteriousisland/addmobspawns.py index 847b8e6..14cdbfd 100644 --- a/mcpacker/pack/mysteriousisland/addmobspawns.py +++ b/mcpacker/pack/mysteriousisland/addmobspawns.py @@ -29,7 +29,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["animalplus:raccoon"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) - b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.within(HE.TEMPERATE, HE.BOREAL)]) + b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.TEMPERATE]) b.seasons = SE.exclude(SE.WINTER) b.group = GR.merge(GR.SOLO, GR.PAIR) b.scarcity = SC.UNCOMMON @@ -41,7 +41,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["animalplus:red_panda"]) b.altitude = AL.span(AL.UPLANDS, AL.HILLS) - b.biomeFilters = BF([ResourceId.parse("bamboo_forest")]) + b.biomeFilters = BF([ResourceId.parse("bamboo_jungle")]) b.seasons = SE.ALL b.group = GR.merge(GR.SOLO, GR.PAIR) b.scarcity = SC.SPARSE @@ -53,32 +53,19 @@ def addMobSpawns(pack:ModPack): b.seasons = SE.AUTUMN b.group = GR.merge(GR.SOLO, GR.FAMILY) b.scarcity = SC.UNCOMMON - b.save("blackbear-temperate-autumn") + b.save("blackbear-autumn") b.seasons = [SE.SPRING, SE.SUMMER] b.scarcity = SC.SPARSE - b.save("blackbear-temperate-springsummer") + b.save("blackbear-springsummer") b.seasons = SE.WINTER b.scarcity = SC.UNUSUAL - b.save("blackbear-temperate-winter") - - b.biomeFilters = BF([HE.BOREAL, (FL.CANOPY, FL.FOREST)]) - b.seasons = SE.AUTUMN - b.scarcity = SC.SPARSE - b.save("blackbear-boreal-autumn") - - b.seasons = [SE.SPRING, SE.SUMMER] - b.scarcity = SC.UNUSUAL - b.save("blackbear-boreal-springsummer") - - b.seasons = SE.WINTER - b.scarcity = SC.RARE - b.save("blackbear-boreal-winter") + b.save("blackbear-winter") b.start(mobs["minecraft:armadillo"]) b.altitude = AL.LOWLANDS - b.biomeFilters = BF([HE.SUBTROPICAL, HU.DRY, SO.CLAYEY]) + b.biomeFilters = BF([HE.SUBTROPICAL, HU.ARID, (SO.CLAYEY, SO.ROCKY)]) b.seasons = SE.SUMMER b.group = GR.merge(GR.SOLO, GR.PAIR) b.scarcity = SC.COMMON @@ -106,7 +93,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["bearminimum:brown_bear"]) b.altitude = AL.span(AL.LOWLANDS, AL.ALPINE) - b.biomeFilters = BF([HE.BOREAL, (FL.CANOPY, FL.FOREST)]) + b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.BOREAL]) b.seasons = SE.AUTUMN b.group = GR.SOLO b.scarcity = SC.SPARSE @@ -122,7 +109,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:camel"]) b.altitude = AL.span(AL.DUNES, AL.LOWLANDS) - b.biomeFilters = BF([HE.TROPICAL, HU.DRY, FL.BARREN, SO.SANDY]) + b.biomeFilters = BF([HE.TROPICAL, HU.ARID, SO.SANDY]) b.seasons = SE.DRY b.group = GR.FAMILY b.scarcity = SC.UNUSUAL @@ -141,7 +128,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["cold_sweat:chameleon"]) b.altitude = AL.span(AL.DUNES, AL.UPLANDS) - b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.TROPICAL, HU.WET, WA.INLAND]) + b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.TROPICAL, HU.SOAKED]) b.seasons = SE.WET b.group = GR.merge(GR.SOLO, GR.FAMILY) b.scarcity = SC.COMMON @@ -153,7 +140,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:chicken"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL]) + b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.SOAKED], [SO.FUNGAL]) b.seasons = SE.SUMMER b.group = GR.TROUP b.scarcity = SC.COMMON @@ -173,8 +160,10 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:cow"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) - b.biomeFilters = \ - BF([HE.within(HE.SUBTROPICAL, HE.BOREAL), [HU.DAMP, HU.DRY], FL.FIELD], [SO.FUNGAL]) + b.biomeFilters = BF( + [FL.FIELD, HE.within(HE.SUBTROPICAL, HE.BOREAL), (HU.DAMP, HU.DRY)], + [SO.FUNGAL, SO.ROCKY] + ) b.seasons = [SE.SPRING, SE.SUMMER] b.group = GR.HERD b.scarcity = SC.SPARSE @@ -188,19 +177,19 @@ def addMobSpawns(pack:ModPack): b.start(mobs["crabbersdelight:crab"]) b.altitude = AL.DUNES - b.biomeFilters = BF([WA.COAST, [HE.TROPICAL, HE.SUBTROPICAL]]) + b.biomeFilters = BF([(HE.TROPICAL, HE.SUBTROPICAL), WA.COAST]) b.seasons = SE.ALL b.group = GR.SOLO b.scarcity = SC.UNCOMMON b.save("crab-warm") - b.biomeFilters = BF([WA.COAST, [HE.TEMPERATE, HE.BOREAL]]) + b.biomeFilters = BF([(HE.TEMPERATE, HE.BOREAL), WA.COAST]) b.scarcity = SC.SPARSE b.save("crab-cool") b.start(mobs["minecraft:dolphin"]) b.altitude = AL.span(AL.SURFACE, AL.DEEPS) - b.biomeFilters = BF([WA.OCEAN, [HE.SUBTROPICAL, HE.TEMPERATE]]) + b.biomeFilters = BF([(HE.SUBTROPICAL, HE.TEMPERATE), WA.OCEAN]) b.location = LO.WATER b.seasons = SE.SUMMER b.group = GR.FAMILY @@ -213,7 +202,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:donkey"]) b.altitude = AL.span(AL.UPLANDS, AL.HILLS) - b.biomeFilters = BF([HE.SUBTROPICAL, HU.DRY, FL.FIELD]) + b.biomeFilters = BF([FL.CLEARING, HE.SUBTROPICAL, HU.DRY]) b.seasons = [SE.SUMMER, SE.AUTUMN] b.group = GR.FAMILY b.scarcity = SC.SPARSE @@ -226,7 +215,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:fox"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) - b.biomeFilters = BF([HE.within(HE.TEMPERATE, HE.FROZEN), FL.FOREST]) + b.biomeFilters = BF([FL.FOREST, HE.within(HE.TEMPERATE, HE.FROZEN), SO.ACIDIC]) b.seasons = [SE.SPRING] b.group = GR.FAMILY b.scarcity = SC.UNCOMMON @@ -239,7 +228,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:frog"]) b.altitude = AL.span(AL.SURFACE, AL.DUNES) - b.biomeFilters = BF([(HE.TROPICAL, HE.TEMPERATE), HU.WET, WA.SWAMP]) + b.biomeFilters = BF([WA.SWAMP]) b.group = GR.HERD b.scarcity = SC.COMMON b.seasons = SE.SUMMER @@ -307,7 +296,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:ocelot"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) - b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET]) + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL]) b.group = GR.SOLO b.scarcity = SC.RARE b.seasons = SE.ALL @@ -315,7 +304,7 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:panda"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) - b.biomeFilters = BF([ResourceId.parse("bamboo_forest")]) + b.biomeFilters = BF([ResourceId.parse("bamboo_jungle")]) b.group = GR.SOLO b.scarcity = SC.UNUSUAL b.seasons = SE.exclude(SE.SPRING) @@ -327,13 +316,13 @@ def addMobSpawns(pack:ModPack): b.start(mobs["minecraft:parrot"]) b.altitude = AL.span(AL.DUNES, AL.HILLS) - b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.TROPICAL, HU.WET]) + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL]) b.group = GR.PAIR b.scarcity = SC.COMMON b.seasons = SE.ALL b.save("parrot-canopyforest") - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL]) + b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL], [SO.FUNGAL]) b.scarcity = SC.UNCOMMON b.save("parrot-clearing") @@ -341,7 +330,9 @@ def addMobSpawns(pack:ModPack): b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) b.biomeFilters = BF([ FL.within(FL.CANOPY, FL.CLEARING), - HE.within(HE.SUBTROPICAL, HE.TEMPERATE) + HE.within(HE.SUBTROPICAL, HE.BOREAL), + SO.LOAMY, + ]) b.group = GR.TROUP b.scarcity = SC.COMMON @@ -395,7 +386,7 @@ def addMobSpawns(pack:ModPack): b.save("rabbit-temperate-winter") b.altitude = AL.span(AL.DUNES, AL.LOWLANDS) - b.biomeFilters = BF([FL.BARREN, HE.TROPICAL, HU.DRY]) + b.biomeFilters = BF([FL.BARREN, HE.TROPICAL, HU.ARID]) b.group = GR.PAIR b.scarcity = SC.SPARSE b.seasons = SE.exclude(SE.SUMMER) @@ -515,6 +506,6 @@ def addMobSpawns(pack:ModPack): b.scarcity = SC.UNUSUAL b.save("wolf-arctic") - b.biomeFilters = BF([(FL.CLEARING, FL.FIELD), HE.SUBTROPICAL, WA.INLAND]) + b.biomeFilters = BF([(FL.CLEARING, FL.FIELD), HE.SUBTROPICAL, WA.INLAND], [SO.ROCKY]) b.scarcity = SC.SPARSE b.save("wolf-savanna") diff --git a/mcpacker/pack/mysteriousisland/addplants.py b/mcpacker/pack/mysteriousisland/addplants.py index 367e2f5..9615c4f 100644 --- a/mcpacker/pack/mysteriousisland/addplants.py +++ b/mcpacker/pack/mysteriousisland/addplants.py @@ -64,13 +64,6 @@ def addPlants(pack:ModPack): radius = 3, )) - plants.add(Patch( - name = "cabbage", - blocks = f"{FD}:wild_cabbages", - density = DE.THIN, - radius = 4, - )) - plants.add(Patch( name = "carrot", blocks = f"{FD}:wild_carrots", @@ -142,6 +135,13 @@ def addPlants(pack:ModPack): radius = 3, )) + plants.add(Patch( + name = "lettuce", + blocks = f"{FD}:wild_cabbages", + density = DE.THIN, + radius = 4, + )) + plants.add(Patch( name = "melon", blocks = f"{MC}:melon", diff --git a/mcpacker/pack/mysteriousisland/addplantspawns.py b/mcpacker/pack/mysteriousisland/addplantspawns.py index 7873571..a276f49 100644 --- a/mcpacker/pack/mysteriousisland/addplantspawns.py +++ b/mcpacker/pack/mysteriousisland/addplantspawns.py @@ -37,7 +37,7 @@ def addPlantSpawns(pack:ModPack): b.start(plants["bellpepper"]) b.altitude = AL.LOWLANDS - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET, WA.INLAND]) + b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.SOAKED, WA.INLAND]) b.scarcity = SC.COMMON b.save("bellpepper") @@ -48,21 +48,14 @@ def addPlantSpawns(pack:ModPack): b.save("blueberry") 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.altitude = AL.span(AL.SOIL, AL.UPLANDS) + b.biomeFilters = BF( + [HU.within(HU.DAMP, HU.SOAKED), (SO.CLAYEY, SO.LOAMY, SO.FUNGAL)], + [HE.FROZEN, WA.OCEAN, WA.RIVER] + ) b.scarcity = SC.COMMON b.save("brownmushroom") - 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("cabbage") - b.start(plants["carrot"]) b.altitude = AL.LOWLANDS b.biomeFilters = BF( @@ -73,7 +66,7 @@ def addPlantSpawns(pack:ModPack): b.start(plants["coffee"]) b.altitude = AL.span(AL.HILLS, AL.ALPINE) - b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET]) + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.SOAKED]) b.scarcity = SC.SPARSE b.save("coffee") @@ -97,7 +90,7 @@ def addPlantSpawns(pack:ModPack): b.start(plants["cranberry"]) b.altitude = AL.DUNES - b.biomeFilters = BF([HU.WET, SO.PEATY]) + b.biomeFilters = BF([(HE.TEMPERATE, HE.BOREAL), WA.SWAMP]) b.scarcity = SC.UNCOMMON b.save("cranberry") @@ -106,13 +99,13 @@ def addPlantSpawns(pack:ModPack): # "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.biomeFilters = BF([FL.BARREN, HU.ARID, SO.SANDY]) b.scarcity = SC.COMMON b.save("flax") 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.biomeFilters = BF([FL.FIELD, HE.SUBTROPICAL, HU.ARID, (SO.LOAMY, SO.SANDY)]) b.scarcity = SC.RARE b.save("hamimelon") @@ -130,9 +123,15 @@ def addPlantSpawns(pack:ModPack): b.scarcity = SC.SPARSE b.save("lemon") + b.start(plants["lettuce"]) + b.altitude = AL.HILLS + b.biomeFilters = BF([FL.FIELD, HE.TEMPERATE, SO.SANDY]) + b.scarcity = SC.COMMON + b.save("lettuce") + b.start(plants["melon"]) b.altitude = AL.LOWLANDS - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL]) + b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.SOAKED], [SO.FUNGAL]) b.scarcity = SC.SPARSE b.save("melon") @@ -147,7 +146,7 @@ def addPlantSpawns(pack:ModPack): # 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.biomeFilters = BF([FL.BARREN, HE.TROPICAL, HU.ARID, SO.SANDY]) b.scarcity = SC.SPARSE # TODO: add sand as substrate in addplants.py b.save("pineapple") @@ -165,12 +164,11 @@ def addPlantSpawns(pack:ModPack): b.save("pumpkin") 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.altitude = AL.span(AL.SOIL, AL.UPLANDS) + b.biomeFilters = BF( + [HU.within(HU.DAMP, HU.SOAKED), (SO.ACIDIC, SO.CLAYEY, SO.FUNGAL)], + [HE.FROZEN, WA.OCEAN, WA.RIVER] + ) b.scarcity = SC.UNCOMMON b.save("redmushroom") @@ -193,8 +191,8 @@ def addPlantSpawns(pack:ModPack): b.save("sunflower") b.start(plants["tomato"]) - b.altitude = AL.span(AL.UPLANDS, AL.HILLS) - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL]) + b.altitude = AL.UPLANDS + b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, (HU.DAMP, HU.SOAKED)], [SO.FUNGAL]) b.scarcity = SC.UNCOMMON b.save("tomato") @@ -220,7 +218,7 @@ def addPlantSpawns(pack:ModPack): b.start(plants["blueorchid"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) - b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET]) + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.SOAKED]) b.scarcity = SC.RARE b.save("blueorchid") @@ -326,8 +324,8 @@ def addPlantSpawns(pack:ModPack): b.save("bayberry-tree") b.start(plants["durian"]) - b.altitude = AL.HILLS - b.biomeFilters = BF([FL.within(FL.CANOPY, FL.CLEARING), HE.TROPICAL, HU.WET, SO.ACIDIC]) + b.altitude = AL.UPLANDS + b.biomeFilters = BF([FL.FOREST, HE.TROPICAL, SO.ACIDIC]) b.scarcity = SC.UNUSUAL b.save("durian-tree") @@ -338,28 +336,26 @@ def addPlantSpawns(pack:ModPack): b.save("fig-tree") 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.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) + b.biomeFilters = BF([(FL.FOREST, FL.CLEARING), HE.TEMPERATE, SO.ACIDIC]) b.scarcity = SC.SPARSE b.save("hawberry-tree") b.start(plants["lychee"]) - b.altitude = AL.UPLANDS - b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.WET], [SO.FUNGAL]) + b.altitude = AL.LOWLANDS + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.SOAKED]) b.scarcity = SC.SPARSE b.save("lychee-tree") 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.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.SOAKED]) b.scarcity = SC.UNCOMMON b.save("mango-tree") b.start(plants["mangosteen"]) b.altitude = AL.UPLANDS - b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.WET, SO.ACIDIC]) + b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL, HU.SOAKED]) b.scarcity = SC.UNUSUAL b.save("mangosteen-tree") @@ -383,6 +379,6 @@ def addPlantSpawns(pack:ModPack): b.start(plants["persimmon"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) - b.biomeFilters = BF([FL.FOREST, HE.TEMPERATE, SO.LOAMY]) + b.biomeFilters = BF([FL.FIELD, HE.TEMPERATE, SO.LOAMY]) b.scarcity = SC.UNCOMMON b.save("persimmon-tree") diff --git a/mcpacker/pack/mysteriousisland/static/notes/mods.md b/mcpacker/pack/mysteriousisland/static/notes/mods.md new file mode 100644 index 0000000..9b5b2e8 --- /dev/null +++ b/mcpacker/pack/mysteriousisland/static/notes/mods.md @@ -0,0 +1,59 @@ +# Core Conceptual Mods: + +* Alex's Mobs +* Cold Sweat +* Dynamic Trees +* Farmer's Delight +* Immersive Engineering +* Immersive Healing +* Railcraft Reborn +* Serene Seasons +* Thirst Was Taken +* Tectonic + +# Extensions + +* Brewin' and Chewin' +* Butchery +* Corn Delight +* Crabber's Delight +* Egg Delight +* Engineer's Delight +* Fruits Delight +* Miner's Delight +* Ocean's Delight +* Pizza Delight +* Realistic Wheat +* Rustic Delight + +# Atmosphere & Decor + +* Bear Minimum +* Chisels & Bits +* Comforts +* Dramatic Doors +* Dramatic Surroundings +* Flower Patch +* Flower Seeds +* Macaw's Bridges +* Macaw's Fences and Walls +* Macaw's Paths and Paving +* Macaw's Stairs +* Macaw's Windows +* Simplest Copper Gear +* Sky's Overworld Quartz +* Small Ships +* Storage Drawers +* Supplementaries + +# Game Mechanics + +* Better Safe Bed +* Biome Spawn Point +* Carry On +* Chunk Loaders +* InControl! +* Map Atlases +* Simple Finite Water Control +* Stack Refill +* You're in Grave Danger