Set up ability to run commands from the terminal

This commit is contained in:
Andrew Miner
2025-10-06 20:57:46 -06:00
parent a8b6e6b15e
commit 4637137152
18 changed files with 231 additions and 49 deletions
@@ -1,7 +1,7 @@
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.core.geology.depositcatalog import DepositCatalog
from tungston.core.geology.inclusion import Inclusion as I
from tungston.modpack.mysteriousisland.mineralcatalog import CATALOG as M
import tungston.core.altitude as AL
@@ -16,13 +16,13 @@ import tungston.core.scarcity as SC
# Catalog ##########################################################################################
CATALOG = C = DepositCatalog(minerals)
CATALOG = C = DepositCatalog()
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)],
biomeFilter = BF([GE.METAMORPHIC, (HE.BOREAL, HE.FROZEN), HU.DAMP]),
inclusions = [I(M.get("iron"), 50), I(M.get("quartz"), 45), I(M.get("uranium"), 5)],
bulk = BU.LARGE,
proportion = 0.2,
))
@@ -16,27 +16,27 @@ def makeMineral(name:str, blockId:str, deepslateBlockId:None|str=None) -> Minera
deepslateBlockId = deepslateBlockId if deepslateBlockId else blockId
return Mineral(name, [
R.inStone(blockId),
R.inDeepslate(blockId)
Replacement.inStone(blockId),
Replacement.inDeepslate(blockId)
])
def makeOreMineral(name:str) -> Mineral:
return Mineral(name, [
R.inStone(f"{name}_ore"),
R.inDeepslate(f"deepslate_{name}_ore")
Replacement.inStone(f"{name}_ore"),
Replacement.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}")
]),
Replacement.inStone(f"{IE}:ore_{name}"),
Replacement.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")
]),
Replacement.inStone(f"{RC}:{name}_ore"),
Replacement.inDeepslate("{RC}:deepslate_{name}_ore")
])
# Catalog ##########################################################################################
@@ -56,7 +56,7 @@ 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("quartz", f"{OQ}:quartz_ore", f"{OQ}:deepslate_quartz_ore"))
C.add(makeMineral("salt", "butcher:saltblock"))
# Earth, gravel, etc.
+17 -16
View File
@@ -1,9 +1,9 @@
from tungston.core.ecology.biomefilter import BiomeFilter as BF
from tungston.core.habitat import Habitat
from tungston.core.fauna.mob import Mob
from tungston.core.fauna.mobplacement import MobPlacement
from tungston.core.fauna.mobcatalog import MobCatalog
from tungston.core.fauna.mobplacement import MobPlacement
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
@@ -11,6 +11,7 @@ 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.active as AC
import tungston.core.fauna.group as GR
import tungston.core.fauna.location as LO
import tungston.core.scarcity as SC
@@ -22,17 +23,17 @@ import tungston.core.season as SE
CATALOG = MobCatalog([
MobPlacement(Mob("armadillo", "minecraft:armadillo", AC.NOCTURNAL),
Habitat(
altitude = AL.LOWLANDS,
altitudes = 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,
altitudes = AL.UPLANDS, scarcity = SC.SPARSE,
).derive(
altitude = AL.LOWLANDS, SE.excluding(SE.SUMMER), scarcity = SC.UNCOMMON,
altitudes = AL.LOWLANDS, seasons = SE.excluding(SE.SUMMER), scarcity = SC.UNCOMMON,
).derive(
altitude = AL.UPLANDS, scarcity = SC.UNUSUAL,
altitudes = AL.UPLANDS, scarcity = SC.UNUSUAL,
)
),
MobPlacement(Mob("black_bear", "bearminimum:black_bear"),
@@ -47,7 +48,7 @@ CATALOG = MobCatalog([
).derive(
seasons = SE.WINTER, scarcity = SC.UNUSUAL
).derive(
biomeFilter = BF([HE.BOREAL, (HE.CANOPY, HE.FOREST)]),
biomeFilter = BF([HE.BOREAL, (FL.CANOPY, FL.FOREST)]),
seasons = SE.AUTUMN,
scarcity = SC.SPARSE
).derive(
@@ -65,7 +66,7 @@ CATALOG = MobCatalog([
)
),
MobPlacement(Mob("bogged", "minecraft:bogged")),
MobPlacement(Mob("brown_bear", "bearminimum:brown_bear")
MobPlacement(Mob("brown_bear", "bearminimum:brown_bear"),
Habitat(
altitudes = AL.span(AL.LOWLANDS, AL.ALPINE),
biomeFilter = BF([HE.BOREAL, (FL.CANOPY, FL.FOREST)]),
@@ -93,7 +94,7 @@ CATALOG = MobCatalog([
MobPlacement(Mob("cat", "minecraft:cat")),
MobPlacement(Mob("cave_spider", "minecraft:cave_spider"),
Habitat(
altitudes = AL.SPAN(AL.OVERBURDEN, AL.HILLS),
altitudes = AL.span(AL.OVERBURDEN, AL.HILLS),
location = LO.CAVE,
group = GR.SOLO,
scarcity = SC.UNCOMMON
@@ -102,27 +103,27 @@ CATALOG = MobCatalog([
MobPlacement(Mob("chameleon", "cold_sweat:chameleon"),
Habitat(
altitudes = AL.span(AL.DUNES, AL.UPLANDS),
biomeFilters = BF([HE.TROPICAL, HU.WET, [FL.CANOPY, FL.FOREST]]),
biomeFilter = BF([HE.TROPICAL, HU.WET, [FL.CANOPY, FL.FOREST]]),
seasons = SE.WET,
groups = GR.merge(GR.SOLO, GR.FAMILY),
group = 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]),
biomeFilter = 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")
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)]),
biomeFilter = BF([HE.TROPICAL, HU.WET, FL.within(FL.CANOPY, FL.CLEARING)]),
seasons = SE.SUMMER,
groups = GR.TROUP,
scarcity.COMMON,
group = GR.TROUP,
scarcity = SC.COMMON,
).derive(
seasons = SE.excluding(SE.SUMMER), scarcity = SC.UNCOMMON
)
@@ -0,0 +1,35 @@
from tungston.interface.runner import Runner as BaseRunner
from tungston.core.world import World
from tungston.modpack.mysteriousisland.biomecatalog import CATALOG as biomes
from tungston.modpack.mysteriousisland.depositcatalog import CATALOG as deposits
from tungston.modpack.mysteriousisland.mineralcatalog import CATALOG as minerals
from tungston.modpack.mysteriousisland.mobcatalog import CATALOG as mobs
from tungston.generator.markdown.reportwriter import ReportWriter
from tungston.generator.markdown.biomereport import BiomeReport
from tungston.generator.markdown.mineralreport import MineralReport
import sys
# Constants ########################################################################################
REPORT_PATH = "./output/markdown/mysteriousisland"
# Class ############################################################################################
class Runner(BaseRunner):
def _command_writeReports(self):
writer = ReportWriter([
BiomeReport(self.world),
MineralReport(self.world)
])
writer.write(REPORT_PATH)
# Script ###########################################################################################
if __name__ == "__main__":
Runner(World(biomes, deposits, minerals, mobs)).run(sys.argv)