crushable-chests/generator.py

64 lines
2.2 KiB
Python

from dataclasses import dataclass
from json import dump
@dataclass
class RandomItemStack:
item: str
count: int = 1
chance: float = 1
recipes: dict[str, list[RandomItemStack]] = {
"ironchests:copper_chest": [
RandomItemStack("minecraft:chest", 1, 0.9),
RandomItemStack("minecraft:copper_ingot", 6, 1),
RandomItemStack("create:copper_nugget", 6, 0.75),
],
"ironchests:iron_chest": [
RandomItemStack("ironchests:copper_chest", 1, 0.9),
RandomItemStack("minecraft:iron_ingot", 6, 1),
RandomItemStack("minecraft:iron_nugget", 6, 0.75),
],
"ironchests:gold_chest": [
RandomItemStack("ironchests:iron_chest", 1, 0.9),
RandomItemStack("minecraft:gold_ingot", 6, 1),
RandomItemStack("minecraft:gold_nugget", 6, 0.75),
],
"ironchests:diamond_chest": [
RandomItemStack("ironchests:golden_chest", 1, 0.9),
RandomItemStack("minecraft:diamond", 2, 1),
RandomItemStack("minecraft:gold_ingot", 4, 1),
RandomItemStack("minecraft:gold_nugget", 6, 0.75),
],
"ironchests:obsidian_chest": [
RandomItemStack("ironchests:diamond_chest", 1, 0.9),
RandomItemStack("minecraft:obsidian", 6, 1),
RandomItemStack("minecraft:obsidian", 2, 0.5),
RandomItemStack("create:powdered_obsidian", 2, 0.25),
],
"ironchests:crystal_chest": [
RandomItemStack("ironchests:diamond_chest", 1, 0.9),
RandomItemStack("minecraft:glass", 3, 1),
RandomItemStack("minecraft:glass", 3, 0.5),
RandomItemStack("minecraft:amethyst_shard", 2, 0.75),
],
}
for input_name, outputs in recipes.items():
namespace, item_name = input_name.split(":", 1)
filename = f"data/ironchests/recipes/crushing_{namespace}_{item_name}.json"
with open(filename, "w") as fp:
dump({
"type": "create:crushing",
"ingredients": [{ "item": input_name }],
"results": [
{
"item": output.item,
"count": output.count,
"chance": output.chance
}
for output in outputs
],
"processingTime": 300
}, fp, indent=2)