from mcpacker.model.ecology.biomefilter import BiomeFilter as BF from mcpacker.model.fauna.mob import Mob from mcpacker.model.fauna.mobcatalog import MobCatalog from mcpacker.model.fauna.mobspawn import MobSpawn from mcpacker.model.fauna.mobspawnbuilder import MobSpawnBuilder from mcpacker.model.habitat import Habitat from mcpacker.model.resourceid import ResourceId from mcpacker.model.modpack import ModPack 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.fauna.active as AC import mcpacker.model.fauna.group as GR import mcpacker.model.fauna.location as LO import mcpacker.model.scarcity as SC import mcpacker.model.season as SE # Constants ######################################################################################## def addMobSpawns(pack:ModPack): mobs = pack.world.mobs b = MobSpawnBuilder(pack.world.mobSpawns) b.start(mobs["animalplus:raccoon"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) 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 b.save("raccoon-normal") b.seasons = SE.WINTER b.scarcity = SC.SPARSE b.save("raccoon-winter") b.start(mobs["animalplus:red_panda"]) b.altitude = AL.span(AL.UPLANDS, AL.HILLS) b.biomeFilters = BF([ResourceId.parse("bamboo_jungle")]) b.seasons = SE.ALL b.group = GR.merge(GR.SOLO, GR.PAIR) b.scarcity = SC.SPARSE b.save("redpanda-normal") b.start(mobs["bearminimum:black_bear"]) b.altitude = AL.span(AL.LOWLANDS, AL.ALPINE) b.biomeFilters = BF([HE.TEMPERATE, FL.FOREST]) b.seasons = SE.AUTUMN b.group = GR.merge(GR.SOLO, GR.FAMILY) b.scarcity = SC.UNCOMMON b.save("blackbear-autumn") b.seasons = [SE.SPRING, SE.SUMMER] b.scarcity = SC.SPARSE b.save("blackbear-springsummer") b.seasons = SE.WINTER b.scarcity = SC.UNUSUAL b.save("blackbear-winter") b.start(mobs["minecraft:armadillo"]) b.altitude = AL.LOWLANDS 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 b.save("armadillo-lowlands-summer") b.altitude = AL.UPLANDS b.scarcity = SC.SPARSE b.save("armadillo-uplands-summer") b.altitude = AL.LOWLANDS b.scarcity = SC.UNCOMMON b.seasons = SE.exclude(SE.SUMMER) b.save("armadillo-lowlands-normal") b.altitude = AL.UPLANDS b.scarcity = SC.UNUSUAL b.save("armadillo-uplands-normal") b.start(mobs["minecraft:blaze"]) b.altitude = AL.PLUTONIC b.location = LO.CAVE b.group = GR.SOLO b.scarcity = SC.UNCOMMON b.save("blaze-normal") b.start(mobs["bearminimum:brown_bear"]) b.altitude = AL.span(AL.LOWLANDS, AL.ALPINE) b.biomeFilters = BF([(FL.CANOPY, FL.FOREST), HE.BOREAL]) b.seasons = SE.AUTUMN b.group = GR.SOLO b.scarcity = SC.SPARSE b.save("brownbear-autumn") b.seasons = [SE.SPRING, SE.SUMMER] b.scarcity = SC.UNUSUAL b.save("brownbear-springsummer") b.seasons = SE.WINTER b.scarcity = SC.RARE b.save("brownbear-winter") b.start(mobs["minecraft:camel"]) b.altitude = AL.span(AL.DUNES, AL.LOWLANDS) b.biomeFilters = BF([HE.TROPICAL, HU.ARID, SO.SANDY]) b.seasons = SE.DRY b.group = GR.FAMILY b.scarcity = SC.UNUSUAL b.save("camel-dry") b.seasons = SE.WET b.scarcity = SC.RARE b.save("camel-wet") b.start(mobs["minecraft:cave_spider"]) b.altitude = AL.span(AL.OVERBURDEN, AL.HILLS) b.location = LO.CAVE b.group = GR.SOLO b.scarcity = SC.UNCOMMON b.save("cavespider-normal") b.start(mobs["cold_sweat:chameleon"]) b.altitude = AL.span(AL.DUNES, AL.UPLANDS) 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 b.save("chameleon-wet") b.seasons = SE.DRY b.scarcity = SC.UNCOMMON b.save("chameleon-dry") b.start(mobs["minecraft:chicken"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.biomeFilters = BF([FL.CLEARING, HE.TROPICAL, HU.SOAKED], [SO.FUNGAL]) b.seasons = SE.SUMMER b.group = GR.TROUP b.scarcity = SC.COMMON b.save("chicken-summer") b.seasons = SE.exclude(SE.SUMMER) b.scarcity = SC.UNCOMMON b.save("chicken-normal") b.start(mobs["minecraft:cod"]) b.altitude = AL.span(AL.SHALLOWS, AL.DEEPS) b.biomeFilters = BF([HE.BOREAL, WA.OCEAN]) b.seasons = SE.ALL b.group = GR.HERD b.scarcity = SC.COMMON b.save("cod-normal") b.start(mobs["minecraft:cow"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) 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 b.save("cow-springsummer") b.altitude = AL.LOWLANDS b.seasons = [SE.AUTUMN, SE.WINTER] b.group = GR.TROUP b.scarcity = SC.UNUSUAL b.save("cow-autumnwinter") b.start(mobs["crabbersdelight:crab"]) b.altitude = AL.DUNES 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([(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([(HE.SUBTROPICAL, HE.TEMPERATE), WA.OCEAN]) b.location = LO.WATER b.seasons = SE.SUMMER b.group = GR.FAMILY b.scarcity = SC.UNCOMMON b.save("dolphin-summer") b.seasons = SE.exclude(SE.SUMMER) b.scarcity = SC.SPARSE b.save("dolphin-normal") b.start(mobs["minecraft:donkey"]) b.altitude = AL.span(AL.UPLANDS, AL.HILLS) b.biomeFilters = BF([FL.CLEARING, HE.SUBTROPICAL, HU.DRY]) b.seasons = [SE.SUMMER, SE.AUTUMN] b.group = GR.FAMILY b.scarcity = SC.SPARSE b.save("donkey-autumnsummer") b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.seasons = [SE.WINTER, SE.SPRING] b.scarcity = SC.SPARSE b.save("donkey-springwinter") b.start(mobs["minecraft:fox"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) 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 b.save("fox-spring") b.seasons = SE.exclude(SE.SPRING) b.group = GR.SOLO b.scarcity = SC.SPARSE b.save("fox-normal") b.start(mobs["minecraft:frog"]) b.altitude = AL.span(AL.SURFACE, AL.DUNES) b.biomeFilters = BF([WA.SWAMP]) b.group = GR.HERD b.scarcity = SC.COMMON b.seasons = SE.SUMMER b.save("frog-summer") b.seasons = SE.SPRING b.scarcity = SC.SPARSE b.save("frog-spring") b.seasons = SE.AUTUMN b.scarcity = SC.UNUSUAL b.save("frog-autumn") b.seasons = SE.WINTER b.scarcity = SC.ABSENT b.save("frog-winter") b.start(mobs["minecraft:glow_squid"]) b.altitude = AL.ABYSS b.biomeFilters = BF([WA.OCEAN], [HE.FROZEN]) b.group = GR.SOLO b.location = LO.WATER b.scarcity = SC.RARE b.seasons = SE.ALL b.save("glowsquid-normal") b.start(mobs["minecraft:goat"]) b.altitude = AL.span(AL.HILLS, AL.CRAGS) b.biomeFilters = BF([(HE.BOREAL, HE.FROZEN), SO.ROCKY]) b.group = GR.FAMILY b.scarcity = SC.UNCOMMON b.seasons = SE.ALL b.save("goat-normal") b.start(mobs["minecraft:horse"]) b.altitude = AL.span(AL.DUNES, AL.LOWLANDS) b.biomeFilters = BF([FL.FIELD, (HE.SUBTROPICAL, HE.TEMPERATE), (SO.LOAMY, SO.PEATY, SO.SANDY)]) b.group = GR.HERD b.scarcity = SC.UNUSUAL b.seasons = SE.ALL b.save("horse-normal") b.start(mobs["minecraft:llama"]) b.altitude = AL.span(AL.ALPINE, AL.PEAKS) b.biomeFilters = BF([(HE.BOREAL, HE.FROZEN), SO.ROCKY]) b.group = GR.HERD b.scarcity = SC.UNCOMMON b.seasons = SE.ALL b.save("llama-normal") b.start(mobs["minecraft:magma_cube"]) b.altitude = AL.PLUTONIC b.location = LO.CAVE b.group = GR.SOLO b.scarcity = SC.UNCOMMON b.save("magmacube-normal") b.start(mobs["minecraft:mooshroom"]) b.altitude = AL.span(AL.DUNES, AL.UPLANDS) b.biomeFilters = BF([SO.FUNGAL]) b.group = GR.HERD b.scarcity = SC.UNCOMMON b.seasons = SE.ALL b.save("mooshroom-normal") b.start(mobs["minecraft:ocelot"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) b.biomeFilters = BF([FL.CANOPY, HE.TROPICAL]) b.group = GR.SOLO b.scarcity = SC.RARE b.seasons = SE.ALL b.save("ocelot-normal") b.start(mobs["minecraft:panda"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.biomeFilters = BF([ResourceId.parse("bamboo_jungle")]) b.group = GR.SOLO b.scarcity = SC.UNUSUAL b.seasons = SE.exclude(SE.SPRING) b.save("panda-normal") b.group = GR.PAIR b.seasons = SE.SPRING b.save("panda-spring") b.start(mobs["minecraft:parrot"]) b.altitude = AL.span(AL.DUNES, AL.HILLS) 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], [SO.FUNGAL]) b.scarcity = SC.UNCOMMON b.save("parrot-clearing") b.start(mobs["minecraft:pig"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) b.biomeFilters = BF([ FL.within(FL.CANOPY, FL.CLEARING), HE.within(HE.SUBTROPICAL, HE.BOREAL), SO.LOAMY, ]) b.group = GR.TROUP b.scarcity = SC.COMMON b.seasons = SE.SUMMER b.save("pig-summer") b.scarcity = SC.UNCOMMON b.seasons = SE.exclude(SE.SUMMER) b.save("pig-normal") b.start(mobs["minecraft:polar_bear"]) b.altitude = AL.DUNES b.biomeFilters = BF([HE.FROZEN, (WA.COAST, WA.OCEAN)]) b.group = GR.PAIR b.scarcity = SC.UNUSUAL b.seasons = [SE.SPRING, SE.WINTER] b.save("polarbear-springwinter") b.group = GR.SOLO b.seasons = [SE.SUMMER, SE.AUTUMN] b.scarcity = SC.RARE b.save("polarbear-autumnsummer") b.start(mobs["minecraft:pufferfish"]) b.altitude = AL.SHALLOWS b.biomeFilters = BF([(HE.TEMPERATE, HE.TROPICAL), WA.OCEAN]) b.group = GR.TROUP b.location = LO.WATER b.scarcity = SC.UNCOMMON b.seasons = SE.ALL b.save("pufferfish-normal") b.start(mobs["minecraft:rabbit"]) b.altitude = AL.span(AL.DUNES, AL.ALPINE) b.biomeFilters = BF([ FL.within(FL.CANOPY, FL.FIELD), HE.within(HE.SUBTROPICAL, HE.BOREAL), WA.INLAND, ]) b.group = GR.FAMILY b.scarcity = SC.COMMON b.seasons = SE.SPRING b.save("rabbit-temperate-spring") b.scarcity = SC.SPARSE b.seasons = [SE.SUMMER, SE.AUTUMN] b.save("rabbit-temperate-autumnsummer") b.scarcity = SC.SPARSE b.seasons = SE.WINTER b.save("rabbit-temperate-winter") b.altitude = AL.span(AL.DUNES, AL.LOWLANDS) b.biomeFilters = BF([FL.BARREN, HE.TROPICAL, HU.ARID]) b.group = GR.PAIR b.scarcity = SC.SPARSE b.seasons = SE.exclude(SE.SUMMER) b.save("rabbit-desert-normal") b.scarcity = SC.UNUSUAL b.seasons = SE.SUMMER b.save("rabbit-desert-summer") b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), HE.FROZEN]) b.scarcity = SC.SPARSE b.seasons = SE.exclude(SE.WINTER) b.save("rabbit-frozen-normal") b.scarcity = SC.UNUSUAL b.seasons = SE.WINTER b.save("rabbit-frozen-winter") b.start(mobs["minecraft:salmon"]) b.altitude = AL.span(AL.SURFACE, AL.SHALLOWS) b.biomeFilters = BF([WA.RIVER], [HE.FROZEN]) b.group = GR.HERD b.scarcity = SC.COMMON b.seasons = SE.AUTUMN b.save("salmon-autumnrun") b.scarcity = SC.UNCOMMON b.seasons = [SE.SPRING] b.save("salmon-springrun") b.seasons = [SE.SUMMER, SE.WINTER] b.scarcity = SC.ABSENT b.save("salmon-notrunning") b.start(mobs["minecraft:sheep"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), HE.BOREAL]) b.group = GR.HERD b.scarcity = SC.UNCOMMON b.seasons = SE.ALL b.save("sheep-normal") b.start(mobs["minecraft:slime"]) b.altitude = AL.span(AL.SURFACE, AL.DUNES) b.biomeFilters = BF([HE.TEMPERATE, WA.SWAMP]) b.group = GR.SOLO b.scarcity = SC.UNCOMMON b.seasons = [SE.SPRING] b.save("slime-spring") b.scarcity = SC.UNUSUAL b.seasons = SE.exclude(SE.SPRING) b.save("slime-normal") b.start(mobs["minecraft:spider"]) b.altitude = AL.span(AL.LOWLANDS, AL.HILLS) b.biomeFilters = BF([FL.CANOPY, HE.TEMPERATE]) b.group = GR.SOLO b.scarcity = SC.COMMON b.seasons = SE.SUMMER b.save("spider-summer") b.scarcity = SC.UNCOMMON b.seasons = [SE.SPRING, SE.AUTUMN] b.save("spider-springsummer") b.scarcity = SC.SPARSE b.seasons = SE.WINTER b.save("spider-winter") b.start(mobs["minecraft:squid"]) b.altitude = AL.DEEPS b.biomeFilters = BF([WA.OCEAN], [HE.FROZEN]) b.group = GR.SOLO b.location = LO.WATER b.scarcity = SC.SPARSE b.seasons = SE.ALL b.save("squid-normal") b.start(mobs["minecraft:tropical_fish"]) b.altitude = AL.SHALLOWS b.biomeFilters = BF([HE.TROPICAL, WA.OCEAN]) b.group = GR.HERD b.location = LO.WATER b.scarcity = SC.COMMON b.seasons = SE.ALL b.save("tropicalfish-normal") b.start(mobs["minecraft:turtle"]) b.altitude = AL.span(AL.SURFACE, AL.SHALLOWS) b.biomeFilters = BF([HE.within(HE.TROPICAL, HE.SUBTROPICAL), WA.OCEAN]) b.group = GR.SOLO b.scarcity = SC.SPARSE b.seasons = SE.ALL b.save("turtle-normal") b.altitude = AL.DUNES b.biomeFilters = BF([HE.within(HE.TROPICAL, HE.SUBTROPICAL), WA.COAST]) b.group = GR.SOLO b.scarcity = SC.UNUSUAL b.save("turtle-spawning") b.start(mobs["minecraft:wolf"]) b.altitude = AL.span(AL.LOWLANDS, AL.UPLANDS) b.biomeFilters = BF([FL.CANOPY, HE.TEMPERATE, WA.INLAND]) b.group = GR.TROUP b.scarcity = SC.COMMON b.seasons = SE.ALL b.save("wolf-deepforest") b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), (HE.TEMPERATE, HE.BOREAL), WA.INLAND]) b.scarcity = SC.UNCOMMON b.save("wolf-normal") b.biomeFilters = BF([FL.within(FL.FOREST, FL.FIELD), HE.FROZEN, WA.INLAND]) b.scarcity = SC.UNUSUAL b.save("wolf-arctic") b.biomeFilters = BF([(FL.CLEARING, FL.FIELD), HE.SUBTROPICAL, WA.INLAND], [SO.ROCKY]) b.scarcity = SC.SPARSE b.save("wolf-savanna")