Checkpoint initial implementation

This commit is contained in:
Andrew Miner
2025-10-06 17:41:18 -06:00
parent 773e0a3d85
commit a8b6e6b15e
106 changed files with 3012 additions and 0 deletions
@@ -0,0 +1,165 @@
from tungston.core.ecology.biome import Biome
from tungston.core.ecology.biomecatalog import BiomeCatalog
from tungston.core.ecology.biomefilter import BiomeFilter
import tungston.core.ecology.flora as F
import tungston.core.ecology.geology as G
import tungston.core.ecology.heat as E
import tungston.core.ecology.humidity as U
import tungston.core.ecology.soil as S
import tungston.core.ecology.water as W
# Constants ########################################################################################
CATALOG = BiomeCatalog([
Biome("aberdeen", "minecraft:windswept_gravelly_hills",
F.BARREN, G.METAMORPHIC, E.BOREAL, U.DAMP, S.ROCKY, W.INLAND
),
Biome("archangel", "minecraft:frozen_ocean",
F.BARREN, G.SEDIMENTARY, E.FROZEN, U.WET, S.SANDY, W.OCEAN
),
Biome("aspen", "minecraft:frozen_peaks",
F.BARREN, G.IGNEOUS, E.FROZEN, U.WET, S.ROCKY, W.INLAND
),
Biome("bombay", "minecraft:lukewarm_ocean",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.WET, S.SANDY, W.OCEAN
),
Biome("boston", "minecraft:cold_ocean",
F.BARREN, G.SEDIMENTARY, E.BOREAL, U.WET, S.CLAYEY, W.OCEAN
),
Biome("bryce", "minecraft:eroded_badlands",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.DRY, S.CLAYEY, W.INLAND
),
Biome("calcutta", "minecraft:mangrove_swamp",
F.FOREST, G.SEDIMENTARY, E.SUBTROPICAL, U.WET, S.CLAYEY, W.INLAND
),
Biome("cornwall", "minecraft:windswept_hills",
F.BARREN, G.METAMORPHIC, E.BOREAL, U.DAMP, S.ROCKY, W.INLAND
),
Biome("dallas", "minecraft:savanna",
F.FIELD, G.SEDIMENTARY, E.SUBTROPICAL, U.DRY, S.SANDY, W.INLAND
),
Biome("duluth", "minecraft:frozen_river",
F.BARREN, G.SEDIMENTARY, E.FROZEN, U.WET, S.SANDY, W.RIVER
),
Biome("durango", "minecraft:savanna_plateau",
F.FIELD, G.IGNEOUS, E.SUBTROPICAL, U.DRY, S.SANDY, W.INLAND
),
Biome("freiburg", "minecraft:dark_forest",
F.CANOPY, G.SEDIMENTARY, E.TEMPERATE, U.WET, S.CLAYEY, W.INLAND
),
Biome("glasgow", "minecraft:windswept_forest",
F.CLEARING, G.METAMORPHIC, E.BOREAL, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("haarlem", "minecraft:flower_forest",
F.CLEARING, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.LOAMY, W.INLAND
),
Biome("halifax", "minecraft:deep_cold_ocean",
F.BARREN, G.SEDIMENTARY, E.BOREAL, U.WET, S.SANDY, W.OCEAN
),
Biome("hammerfest", "minecraft:ice_spikes",
F.BARREN, G.METAMORPHIC, E.FROZEN, U.WET, S.ROCKY, W.INLAND
),
Biome("havana", "minecraft:deep_lukewarm_ocean",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.WET, S.SANDY, W.OCEAN
),
Biome("hilo", "minecraft:mushroom_fields",
F.CLEARING, G.IGNEOUS, E.SUBTROPICAL, U.WET, S.FUNGAL, W.INLAND
),
Biome("honolulu", "minecraft:deep_ocean",
F.BARREN, G.SEDIMENTARY, E.TEMPERATE, U.WET, S.SANDY, W.OCEAN
),
Biome("innnesbruk", "minecraft:meadow",
F.FIELD, G.SEDIMENTARY, E.BOREAL, U.DAMP, S.PEATY, W.INLAND
),
Biome("irkutsk", "minecraft:taiga",
F.FOREST, G.METAMORPHIC, E.BOREAL, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("jackson", "minecraft:jagged_peaks",
F.BARREN, G.METAMORPHIC, E.BOREAL, U.DRY, S.ROCKY, W.INLAND
),
Biome("juneau", "minecraft:old_growth_spruce_taiga",
F.FOREST, G.METAMORPHIC, E.BOREAL, U.DAMP, S.PEATY, W.INLAND
),
Biome("kansascity", "minecraft:plains",
F.FIELD, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.LOAMY, W.INLAND
),
Biome("kola", "minecraft:snowy_taiga",
F.BARREN, G.METAMORPHIC, E.FROZEN, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("kyoto", "minecraft:cherry_grove",
F.CLEARING, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.ROCKY, W.INLAND
),
Biome("madras", "minecraft:sparse_jungle",
F.CLEARING, G.SEDIMENTARY, E.TROPICAL, U.WET, S.ACIDIC, W.INLAND
),
Biome("memphis", "minecraft:river",
F.CLEARING, G.SEDIMENTARY, E.TEMPERATE, U.WET, S.SANDY, W.RIVER
),
Biome("minsk", "minecraft:old_growth_birch_forest",
F.FOREST, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("moab", "minecraft:windswept_savanna",
F.FIELD, G.IGNEOUS, E.SUBTROPICAL, U.DRY, S.ROCKY, W.INLAND
),
Biome("mobile", "minecraft:swamp",
F.CLEARING, G.SEDIMENTARY, E.TEMPERATE, U.WET, S.PEATY, W.SWAMP
),
Biome("moscow", "minecraft:snowy_plains",
F.FIELD, G.SEDIMENTARY, E.FROZEN, U.DAMP, S.LOAMY, W.INLAND
),
Biome("nassau", "minecraft:warm_ocean",
F.BARREN, G.SEDIMENTARY, E.TROPICAL, U.WET, S.SANDY, W.COAST
),
Biome("nice", "minecraft:beach",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.DAMP, S.SANDY, W.COAST
),
Biome("nuuk", "minecraft:beach",
F.BARREN, G.SEDIMENTARY, E.FROZEN, U.DAMP, S.SANDY, W.COAST
),
Biome("perm", "minecraft:old_growth_pine_taiga",
F.FOREST, G.METAMORPHIC, E.BOREAL, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("phoenix", "minecraft:desert",
F.BARREN, G.SEDIMENTARY, E.TROPICAL, U.DRY, S.SANDY, W.INLAND
),
Biome("plymouth", "minecraft:stony_shore",
F.BARREN, G.METAMORPHIC, E.TEMPERATE, U.DAMP, S.ROCKY, W.COAST
),
Biome("portland", "minecraft:forest",
F.FOREST, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.LOAMY, W.INLAND
),
Biome("quito", "minecraft:stony_peaks",
F.BARREN, G.IGNEOUS, E.BOREAL, U.DRY, S.ROCKY, W.INLAND
),
Biome("rangoon", "minecraft:bamboo_jungle",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.DRY, S.LOAMY, W.INLAND
),
Biome("sanfrancisco", "minecraft:ocean",
F.BARREN, G.SEDIMENTARY, E.TEMPERATE, U.WET, S.SANDY, W.OCEAN
),
Biome("santafe", "minecraft:wooded_badlands",
F.CLEARING, G.SEDIMENTARY, E.SUBTROPICAL, U.DRY, S.CLAYEY, W.INLAND
),
Biome("singapore", "minecraft:jungle",
F.CANOPY, G.SEDIMENTARY, E.TROPICAL, U.WET, S.ACIDIC, W.INLAND
),
Biome("tombstone", "minecraft:badlands",
F.BARREN, G.SEDIMENTARY, E.SUBTROPICAL, U.DRY, S.CLAYEY, W.INLAND
),
Biome("topeka", "minecraft:sunflower_plains",
F.FIELD, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.LOAMY, W.INLAND
),
Biome("tromso", "minecraft:deep_frozen_ocean",
F.BARREN, G.SEDIMENTARY, E.FROZEN, U.WET, S.SANDY, W.OCEAN
),
Biome("umea", "minecraft:grove",
F.CLEARING, G.METAMORPHIC, E.FROZEN, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("warsaw", "minecraft:birch_forest",
F.FOREST, G.SEDIMENTARY, E.TEMPERATE, U.DAMP, S.ACIDIC, W.INLAND
),
Biome("zurich", "minecraft:snowy_slopes",
F.BARREN, G.METAMORPHIC, E.FROZEN, U.DAMP, S.ROCKY, W.INLAND
),
])
@@ -0,0 +1,28 @@
from tungston.core.ecology.biomefilter import BiomeFilter as BF
from tungston.core.geology.depositcatalog import DepositCatalog
from tungston.core.geology.deposit.inclusion import Inclusion as I
from tungston.core.geology.deposit.metaldeposit import MetalDeposit
from tungston.modpack.mysteriousisland.mineralcatalog import CATALOG as M
import tungston.core.altitude as AL
import tungston.core.ecology.flora as FL
import tungston.core.ecology.geology as GE
import tungston.core.ecology.heat as HE
import tungston.core.ecology.humidity as HU
import tungston.core.ecology.soil as SO
import tungston.core.ecology.water as WA
import tungston.core.geology.bulk as BU
import tungston.core.scarcity as SC
# Catalog ##########################################################################################
CATALOG = C = DepositCatalog(minerals)
C.add(MetalDeposit(
name = "bif_iron",
biomeFilter = BF([GE.METAMORPHIC, (HE.BOREAL, HE.FROZEN), HU.DAMP]),
scarcity = SC.COMMON,
minerals = [I(M.get("iron"), 50), I(M.get("quartz"), 45), I(M.get("uranium"), 5)],
bulk = BU.LARGE,
proportion = 0.2,
))
@@ -0,0 +1,109 @@
from tungston.core.geology.mineral import Mineral
from tungston.core.geology.mineralcatalog import MineralCatalog
from tungston.core.geology.replacement import Replacement
# Constants ########################################################################################
IE = "immersiveengineering"
OQ = "overworldquartzore"
RC = "railcraft"
# Helpers ##########################################################################################
def makeMineral(name:str, blockId:str, deepslateBlockId:None|str=None) -> Mineral:
deepslateBlockId = deepslateBlockId if deepslateBlockId else blockId
return Mineral(name, [
R.inStone(blockId),
R.inDeepslate(blockId)
])
def makeOreMineral(name:str) -> Mineral:
return Mineral(name, [
R.inStone(f"{name}_ore"),
R.inDeepslate(f"deepslate_{name}_ore")
])
def makeImmersiveEngineeringOreMineral(name:str) -> Mineral:
return Mineral(name, [
R.inStone(f"{IE}:ore_{name}"),
R.inDeepslate("{IE}:deepslate_ore_{name}")
]),
def makeRailcraftOreMineral(name:str) -> Mineral:
return Mineral(name, [
R.inStone(f"{RC}:{name}_ore"),
R.inDeepslate("{RC}:deepslate_{name}_ore")
]),
# Catalog ##########################################################################################
CATALOG = C = MineralCatalog()
# Basic Ores
C.add(makeOreMineral("coal"))
C.add(makeOreMineral("copper"))
C.add(makeOreMineral("diamond"))
C.add(makeOreMineral("emerald"))
C.add(makeOreMineral("gold"))
C.add(makeOreMineral("iron"))
C.add(makeOreMineral("lapis"))
C.add(makeOreMineral("redstone"))
# Crystals
C.add(makeMineral("amethyst", "amethyst_block"))
C.add(makeMineral("glowstone", "glowstone"))
C.add(makeMineral("quartz", f"{OQ}:quartz_ore") f"{OQ}:deepslate_quartz_ore")
C.add(makeMineral("salt", "butcher:saltblock"))
# Earth, gravel, etc.
C.add(makeMineral("clay", "clay"))
C.add(makeMineral("coarsedirt", "coarse_dirt"))
C.add(makeMineral("dirt", "dirt"))
C.add(makeMineral("gravel", "gravel"))
C.add(makeMineral("loam", "farmersdelight:rich_soil"))
C.add(makeMineral("packedice", "packed_ice"))
C.add(makeMineral("peat", "kubejs:peat_block"))
C.add(makeMineral("redsand", "redsand"))
C.add(makeMineral("sand", "sand"))
C.add(makeMineral("soulsand", "soulsand"))
# Stone
C.add(makeMineral("andesite", "andesite"))
C.add(makeMineral("arkrose", "red_sandstone"))
C.add(makeMineral("basalt", "basalt"))
C.add(makeMineral("breccia", "cobblestone"))
C.add(makeMineral("chalk", "calcite"))
C.add(makeMineral("diorite", "diorite"))
C.add(makeMineral("dolostone", "end_stone"))
C.add(makeMineral("gneiss", "deepslate"))
C.add(makeMineral("granite", "granite"))
C.add(makeMineral("greywacke", "stone"))
C.add(makeMineral("komatite", "blackstone"))
C.add(makeMineral("limestone", "dripstone_block"))
C.add(makeMineral("magma", "magma_block"))
C.add(makeMineral("marble", f"{RC}:quarried_stone"))
C.add(makeMineral("netherite", "ancient_debris"))
C.add(makeMineral("obsidian", "obsidian"))
C.add(makeMineral("pumice", "netherrack"))
C.add(makeMineral("sandstone", "sandstone"))
C.add(makeMineral("tuff", "tuff"))
# Immersive Engineering Ores
C.add(makeImmersiveEngineeringOreMineral("aluminum"))
C.add(makeImmersiveEngineeringOreMineral("lead"))
C.add(makeImmersiveEngineeringOreMineral("nickel"))
C.add(makeImmersiveEngineeringOreMineral("silver"))
C.add(makeImmersiveEngineeringOreMineral("uranium"))
# Railcraft Ores
C.add(Mineral("saltpeter", [
Replacement("sand", f"{RC}:saltpeter_ore"),
Replacement("sandstone", f"{RC}:saltpeter_ore"),
]))
C.add(makeRailcraftOreMineral("sulfur"))
C.add(makeRailcraftOreMineral("tin"))
C.add(makeRailcraftOreMineral("zinc"))
@@ -0,0 +1,183 @@
from tungston.core.ecology.biomefilter import BiomeFilter as BF
from tungston.core.fauna.mob import Mob
from tungston.core.fauna.mobplacement import MobPlacement
from tungston.core.fauna.mobcatalog import MobCatalog
import tungston.core.active as AC
import tungston.core.altitude as AL
import tungston.core.ecology.flora as FL
import tungston.core.ecology.geology as GE
import tungston.core.ecology.heat as HE
import tungston.core.ecology.humidity as HU
import tungston.core.ecology.soil as SO
import tungston.core.ecology.water as WA
import tungston.core.fauna.group as GR
import tungston.core.fauna.location as LO
import tungston.core.scarcity as SC
import tungston.core.season as SE
# Constants ########################################################################################
CATALOG = MobCatalog([
MobPlacement(Mob("armadillo", "minecraft:armadillo", AC.NOCTURNAL),
Habitat(
altitude = AL.LOWLANDS,
biomeFilter = BF([HE.SUBTROPICAL, HU.DRY]),
seasons = SE.SUMMER,
group = GR.merge(GR.SOLO, GR.PAIR),
scarcity = SC.COMMON
).derive(
altitude = AL.UPLANDS, scarcity = SC.SPARSE,
).derive(
altitude = AL.LOWLANDS, SE.excluding(SE.SUMMER), scarcity = SC.UNCOMMON,
).derive(
altitude = AL.UPLANDS, scarcity = SC.UNUSUAL,
)
),
MobPlacement(Mob("black_bear", "bearminimum:black_bear"),
Habitat(
altitudes = AL.span(AL.LOWLANDS, AL.ALPINE),
biomeFilter = BF([HE.TEMPERATE, FL.FOREST]),
seasons = SE.AUTUMN,
group = GR.merge(GR.SOLO, GR.FAMILY),
scarcity = SC.UNCOMMON,
).derive(
seasons = [SE.SPRING, SE.SUMMER], scarcity = SC.SPARSE
).derive(
seasons = SE.WINTER, scarcity = SC.UNUSUAL
).derive(
biomeFilter = BF([HE.BOREAL, (HE.CANOPY, HE.FOREST)]),
seasons = SE.AUTUMN,
scarcity = SC.SPARSE
).derive(
seasons = [SE.SPRING, SE.SUMMER], scarcity = SC.UNUSUAL
).derive(
seasons = SE.WINTER, scarcity = SC.RARE
)
),
MobPlacement(Mob("blaze", "minecraft:blaze"),
Habitat(
altitudes = AL.PLUTONIC,
location = LO.CAVE,
group = GR.SOLO,
scarcity = SC.UNCOMMON
)
),
MobPlacement(Mob("bogged", "minecraft:bogged")),
MobPlacement(Mob("brown_bear", "bearminimum:brown_bear")
Habitat(
altitudes = AL.span(AL.LOWLANDS, AL.ALPINE),
biomeFilter = BF([HE.BOREAL, (FL.CANOPY, FL.FOREST)]),
seasons = SE.AUTUMN,
group = GR.SOLO,
scarcity = SC.SPARSE
).derive(
seasons = [SE.SPRING, SE.SUMMER], scarcity = SC.UNUSUAL
).derive(
seasons = SE.WINTER, scarcity = SC.RARE
)
),
MobPlacement(Mob("bulwark", "immersiveengineering:bulwark")),
MobPlacement(Mob("camel", "minecraft:camel", AC.CREPUSCULAR),
Habitat(
altitudes = AL.span(AL.DUNES, AL.LOWLANDS),
biomeFilter = BF([HE.TROPICAL, HU.DRY, FL.BARREN, SO.SANDY]),
seasons = SE.WET,
group = GR.FAMILY,
scarcity = SC.UNUSUAL,
).derive(
seasons = SE.DRY, scarcity = SC.RARE
)
),
MobPlacement(Mob("cat", "minecraft:cat")),
MobPlacement(Mob("cave_spider", "minecraft:cave_spider"),
Habitat(
altitudes = AL.SPAN(AL.OVERBURDEN, AL.HILLS),
location = LO.CAVE,
group = GR.SOLO,
scarcity = SC.UNCOMMON
)
),
MobPlacement(Mob("chameleon", "cold_sweat:chameleon"),
Habitat(
altitudes = AL.span(AL.DUNES, AL.UPLANDS),
biomeFilters = BF([HE.TROPICAL, HU.WET, [FL.CANOPY, FL.FOREST]]),
seasons = SE.WET,
groups = GR.merge(GR.SOLO, GR.FAMILY),
scarcity = SC.COMMON,
).derive(
seasons = SE.DRY, scarcity = SC.UNCOMMON,
).derive(
biomeFilters = BF([HE.TROPICAL, HU.WET, FL.CLEARING]),
seasons = SE.WET,
scarcity = SC.UNCOMMON
).derive(
seasons = SE.DRY, scarcity = SC.SPARSE,
)
),
MobPlacement(Mob("chicken", "minecraft:chicken")
Habitat(
altitudes = AL.span(AL.LOWLANDS, AL.UPLANDS),
biomeFilters = BF([HE.TROPICAL, HU.WET, FL.within(FL.CANOPY, FL.CLEARING)]),
seasons = SE.SUMMER,
groups = GR.TROUP,
scarcity.COMMON,
).derive(
seasons = SE.excluding(SE.SUMMER), scarcity = SC.UNCOMMON
)
),
MobPlacement(Mob("cod", "minecraft:cod")),
MobPlacement(Mob("commando", "immersiveengineering:commando")),
MobPlacement(Mob("cow", "minecraft:cow")),
MobPlacement(Mob("crab", "crabbersdelight:crab")),
MobPlacement(Mob("creeper", "minecraft:creeper")),
MobPlacement(Mob("dolphin", "minecraft:dolphin")),
MobPlacement(Mob("donkey", "minecraft:donkey")),
MobPlacement(Mob("drowned", "minecraft:drowned")),
MobPlacement(Mob("enderman", "minecraft:enderman")),
MobPlacement(Mob("evoker", "minecraft:evoker")),
MobPlacement(Mob("fox", "minecraft:fox")),
MobPlacement(Mob("frog", "minecraft:frog")),
MobPlacement(Mob("fusilier", "immersiveengineering:fusilier")),
MobPlacement(Mob("glow_squid", "minecraft:glow_squid")),
MobPlacement(Mob("goat", "minecraft:goat")),
MobPlacement(Mob("hoglin", "minecraft:hoglin")),
MobPlacement(Mob("horse", "minecraft:horse")),
MobPlacement(Mob("husk", "minecraft:husk")),
MobPlacement(Mob("llama", "minecraft:llama")),
MobPlacement(Mob("magma_cube", "minecraft:magma_cube")),
MobPlacement(Mob("mooshroom", "minecraft:mooshroom")),
MobPlacement(Mob("mule", "minecraft:mule")),
MobPlacement(Mob("ocelot", "minecraft:ocelot")),
MobPlacement(Mob("panda", "minecraft:panda")),
MobPlacement(Mob("parrot", "minecraft:parrot")),
MobPlacement(Mob("pig", "minecraft:pig")),
MobPlacement(Mob("pillager", "minecraft:pillager")),
MobPlacement(Mob("polar_bear", "minecraft:polar_bear")),
MobPlacement(Mob("pufferfish", "minecraft:pufferfish")),
MobPlacement(Mob("rabbit", "minecraft:rabbit")),
MobPlacement(Mob("raccoon", "animalplus:raccoon")),
MobPlacement(Mob("ravager", "minecraft:ravager")),
MobPlacement(Mob("red_panda", "animalplus:red_panda")),
MobPlacement(Mob("salmon", "minecraft:salmon")),
MobPlacement(Mob("sheep", "minecraft:sheep")),
MobPlacement(Mob("skeleton", "minecraft:skeleton")),
MobPlacement(Mob("slime", "minecraft:slime")),
MobPlacement(Mob("spider", "minecraft:spider")),
MobPlacement(Mob("squid", "minecraft:squid")),
MobPlacement(Mob("tropical_fish", "minecraft:tropical_fish")),
MobPlacement(Mob("turtle", "minecraft:turtle")),
MobPlacement(Mob("vex", "minecraft:vex")),
MobPlacement(Mob("villager", "minecraft:villager")),
MobPlacement(Mob("vindicator", "minecraft:vindicator")),
MobPlacement(Mob("wandering_trader", "minecraft:wandering_trader")),
MobPlacement(Mob("warden", "minecraft:warden")),
MobPlacement(Mob("witch", "minecraft:witch")),
MobPlacement(Mob("wither_skeleton", "minecraft:wither_skeleton")),
MobPlacement(Mob("wither", "minecraft:wither")),
MobPlacement(Mob("wolf", "minecraft:wolf")),
MobPlacement(Mob("zoglin", "minecraft:zoglin")),
MobPlacement(Mob("zombie_villager", "minecraft:zombie_villager")),
MobPlacement(Mob("zombie", "minecraft:zombie")),
])
@@ -0,0 +1,10 @@
from tungston.core.world import World
from tungston.modpacks.mysteriousisland.biomecatalog import CATALOG as biomeCatalog
from tungston.modpacks.mysteriousisland.depositcatalog import CATALOG as depositCatalog
from tungston.modpacks.mysteriousisland.mineralcatalog import CATALOG as mineralCatalog
from tungston.modpacks.mysteriousisland.mobcatalog import CATALOG as mobCatalog
# Constants ########################################################################################
WORLD = World(biomeCatalog, depositCatalog, mineralCatalog, mobCatalog)