* geology * starting some loot table stuff * more stuff * swap some rocks * refactor * phew * drive-by fix * all done I think * remove sylvite * oh yeah baby it's all coming together * cleaned up some lines that didn't do anything, added more comments, removed log spam * blah blah * fix drying mat * fix ladders * tfc, beneath, and moon stuff done...? this is gonna take 5ever * a * some sand stuff, more stone types * wrong way around * unifying various brick block recipes * remove shaped create deco brick recipes * some progress on block creation * we got into the create world screen! * getting somewhere * Reloaded with no KubeJS errors! * new assets * I thiiiink that's about everything * fix some stonecutting * recipe declared but never used
220 lines
11 KiB
JavaScript
220 lines
11 KiB
JavaScript
|
|
//priority: 0
|
|
"use strict";
|
|
|
|
/*
|
|
* Set this const to true only when you need to run the tool because you added a new material.
|
|
* It does not need to be enabled all the time.
|
|
*/
|
|
const enableTool = false;
|
|
|
|
//#region Assign materials
|
|
//Assign a new material here with the name of the material, the hex color for the name display, the item id that is used during smithing, and an index number that should be !!!unique!!!
|
|
const materials = [
|
|
//Gems
|
|
{materialName: 'almandine_tfc', nameColor: '#7b1112', itemName: 'gtceu:exquisite_almandine_gem', indexNumber: 0.11},
|
|
{materialName: 'andradite_tfc', nameColor: '#c29d1e', itemName: 'gtceu:exquisite_andradite_gem', indexNumber: 0.12},
|
|
{materialName: 'blue_topaz_tfc', nameColor: '#a7c1c6', itemName: 'gtceu:exquisite_blue_topaz_gem', indexNumber: 0.13},
|
|
{materialName: 'cinnabar_tfc', nameColor: '#c2274a', itemName: 'gtceu:exquisite_cinnabar_gem', indexNumber: 0.14},
|
|
{materialName: 'coal_tfc', nameColor: '#2b2f32', itemName: 'gtceu:exquisite_coal_gem', indexNumber: 0.15},
|
|
{materialName: 'diamond_tfc', nameColor: '#98c2c6', itemName: 'gtceu:exquisite_diamond_gem', indexNumber: 0.16},
|
|
{materialName: 'emerald_tfc', nameColor: '#11c254', itemName: 'gtceu:exquisite_emerald_gem', indexNumber: 0.17},
|
|
{materialName: 'green_sapphire_tfc', nameColor: '#75af89', itemName: 'gtceu:exquisite_green_sapphire_gem', indexNumber: 0.18},
|
|
{materialName: 'grossular_tfc', nameColor: '#c28b5c', itemName: 'gtceu:exquisite_grossular_gem', indexNumber: 0.19},
|
|
{materialName: 'rutile_tfc', nameColor: '#681c05', itemName: 'gtceu:exquisite_rutile_gem', indexNumber: 0.191},
|
|
{materialName: 'lazurite_tfc', nameColor: '#1e29bb', itemName: 'gtceu:exquisite_lazurite_gem', indexNumber: 0.192},
|
|
{materialName: 'pyrope_tfc', nameColor: '#b11344', itemName: 'gtceu:exquisite_pyrope_gem', indexNumber: 0.193},
|
|
{materialName: 'rock_salt_tfc', nameColor: '#c2b2af', itemName: 'gtceu:exquisite_rock_salt_gem', indexNumber: 0.194},
|
|
{materialName: 'ruby_tfc', nameColor: '#a41b0c', itemName: 'gtceu:exquisite_ruby_gem', indexNumber: 0.195},
|
|
{materialName: 'salt_tfc', nameColor: '#bebec2', itemName: 'gtceu:exquisite_salt_gem', indexNumber: 0.196},
|
|
{materialName: 'sapphire_tfc', nameColor: '#2628b0', itemName: 'gtceu:exquisite_sapphire_gem', indexNumber: 0.197},
|
|
{materialName: 'sodalite_tfc', nameColor: '#2e40c6', itemName: 'gtceu:exquisite_sodalite_gem', indexNumber: 0.198},
|
|
{materialName: 'armalcolite_tfc', nameColor: '#424847', itemName: 'gtceu:exquisite_armalcolite_gem', indexNumber: 0.199},
|
|
{materialName: 'spessartine_tfc', nameColor: '#c28017', itemName: 'gtceu:exquisite_spessartine_gem', indexNumber: 0.181},
|
|
{materialName: 'topaz_tfc', nameColor: '#b1a42d', itemName: 'gtceu:exquisite_topaz_gem', indexNumber: 0.182},
|
|
{materialName: 'uvarovite_tfc', nameColor: '#22b43b', itemName: 'gtceu:exquisite_uvarovite_gem', indexNumber: 0.183},
|
|
{materialName: 'nether_quartz_tfc', nameColor: '#bdb6b0', itemName: 'gtceu:exquisite_nether_quartz_gem', indexNumber: 0.184},
|
|
{materialName: 'certus_quartz_tfc', nameColor: '#8ca4c4', itemName: 'gtceu:exquisite_certus_quartz_gem', indexNumber: 0.185},
|
|
{materialName: 'quartzite_tfc', nameColor: '#b8bab8', itemName: 'gtceu:exquisite_quartzite_gem', indexNumber: 0.186},
|
|
{materialName: 'realgar_tfc', nameColor: '#c22e28', itemName: 'gtceu:exquisite_realgar_gem', indexNumber: 0.187},
|
|
{materialName: 'malachite_tfc', nameColor: '#00b789', itemName: 'gtceu:exquisite_malachite_gem', indexNumber: 0.188},
|
|
{materialName: 'olivine_tfc', nameColor: '#7fad03', itemName: 'gtceu:exquisite_olivine_gem', indexNumber: 0.171},
|
|
{materialName: 'opal_tfc', nameColor: '#bdadb6', itemName: 'gtceu:exquisite_opal_gem', indexNumber: 0.172},
|
|
{materialName: 'amethyst_tfc', nameColor: '#9b78ba', itemName: 'gtceu:exquisite_amethyst_gem', indexNumber: 0.173},
|
|
// {materialName: 'echo_shard_tfc', nameColor: '#002123', itemName: 'gtceu:exquisite_echo_shard_gem', indexNumber: 0.174}, // disabled
|
|
{materialName: 'lapis_tfc', nameColor: '#6581c6', itemName: 'gtceu:exquisite_lapis_gem', indexNumber: 0.175},
|
|
{materialName: 'apatite_tfc', nameColor: '#059cbb', itemName: 'gtceu:exquisite_apatite_gem', indexNumber: 0.176},
|
|
{materialName: 'red_garnet_tfc', nameColor: '#710910', itemName: 'gtceu:exquisite_red_garnet_gem', indexNumber: 0.177},
|
|
{materialName: 'yellow_garnet_tfc', nameColor: '#bbc207', itemName: 'gtceu:exquisite_yellow_garnet_gem', indexNumber: 0.178},
|
|
{materialName: 'monazite_tfc', nameColor: '#9eb576', itemName: 'gtceu:exquisite_monazite_gem', indexNumber: 0.179},
|
|
{materialName: 'rose_quartz_tfc', nameColor: '#ba3458', itemName: 'greate:exquisite_rose_quartz_gem', indexNumber: 0.161},
|
|
{materialName: 'fluix_tfc', nameColor: '#53458d', itemName: 'tfg:exquisite_fluix_gem', indexNumber: 0.162},
|
|
//Metals
|
|
{materialName: 'silver_tfc', nameColor: '#d8d8f4', itemName: 'vintageimprovements:silver_sheet', indexNumber: 0.162},
|
|
{materialName: 'sterling_silver_tfc', nameColor: '#eae5d3', itemName: 'gtceu:sterling_silver_plate', indexNumber: 0.163},
|
|
{materialName: 'gold_tfc', nameColor: '#ede65b', itemName: 'create:golden_sheet', indexNumber: 0.164},
|
|
{materialName: 'rose_gold_tfc', nameColor: '#eddedb', itemName: 'vintageimprovements:rose_gold_sheet', indexNumber: 0.165},
|
|
{materialName: 'nickel_tfc', nameColor: '#bfd1ea', itemName: 'vintageimprovements:nickel_sheet', indexNumber: 0.166},
|
|
{materialName: 'platinum_tfc', nameColor: '#d8cea1', itemName: 'vintageimprovements:platinum_sheet', indexNumber: 0.167},
|
|
{materialName: 'titanium_tfc', nameColor: '#c496d8', itemName: 'gtceu:titanium_plate', indexNumber: 0.168},
|
|
{materialName: 'bismuth_tfc', nameColor: '#607c79', itemName: 'gtceu:bismuth_plate', indexNumber: 0.169},
|
|
{materialName: 'neutronium_tfc', nameColor: '#d7d7db', itemName: 'gtceu:neutronium_plate', indexNumber: 0.151},
|
|
//Other
|
|
{materialName: 'pyrite_tfc', nameColor: '#a75e10', itemName: 'gtceu:rich_raw_pyrite', indexNumber: 0.152},
|
|
{materialName: 'redx_tfc', nameColor: '#a06156', itemName: 'morered:red_alloy_wire', indexNumber: 0.153}
|
|
]
|
|
/////////////////////////////
|
|
/////////////////////////////
|
|
|
|
// #region Tags
|
|
// Assigns trim_materials tag to items registered above
|
|
function registerTFGTrimItemTags(event) {
|
|
event.removeAll('minecraft:trim_materials')
|
|
materials.forEach(material => {
|
|
event.add('minecraft:trim_materials', material.itemName)
|
|
})
|
|
}
|
|
// #endregion
|
|
|
|
//#region Trim Item Atlas
|
|
//Automatically creates armor_trims.json file
|
|
if (enableTool) {
|
|
|
|
const trimfilePath = 'kubejs/assets/minecraft/atlases/armor_trims.json';
|
|
let trimdata = JsonIO.read(trimfilePath) || {};
|
|
trimdata["sources"] = trimdata["sources"] || [];
|
|
|
|
let trimsource = trimdata["sources"].find(s => s.type === "paletted_permutations");
|
|
|
|
if (!trimsource) {
|
|
trimsource = {
|
|
type: "paletted_permutations",
|
|
textures: [
|
|
"trims/models/armor/coast",
|
|
"trims/models/armor/coast_leggings",
|
|
"trims/models/armor/sentry",
|
|
"trims/models/armor/sentry_leggings",
|
|
"trims/models/armor/dune",
|
|
"trims/models/armor/dune_leggings",
|
|
"trims/models/armor/wild",
|
|
"trims/models/armor/wild_leggings",
|
|
"trims/models/armor/ward",
|
|
"trims/models/armor/ward_leggings",
|
|
"trims/models/armor/eye",
|
|
"trims/models/armor/eye_leggings",
|
|
"trims/models/armor/vex",
|
|
"trims/models/armor/vex_leggings",
|
|
"trims/models/armor/tide",
|
|
"trims/models/armor/tide_leggings",
|
|
"trims/models/armor/snout",
|
|
"trims/models/armor/snout_leggings",
|
|
"trims/models/armor/rib",
|
|
"trims/models/armor/rib_leggings",
|
|
"trims/models/armor/spire",
|
|
"trims/models/armor/spire_leggings",
|
|
"trims/models/armor/wayfinder",
|
|
"trims/models/armor/wayfinder_leggings",
|
|
"trims/models/armor/shaper",
|
|
"trims/models/armor/shaper_leggings",
|
|
"trims/models/armor/silence",
|
|
"trims/models/armor/silence_leggings",
|
|
"trims/models/armor/raiser",
|
|
"trims/models/armor/raiser_leggings",
|
|
"trims/models/armor/host",
|
|
"trims/models/armor/host_leggings"
|
|
],
|
|
palette_key: "trims/color_palettes/trim_palette",
|
|
permutations: {}
|
|
};
|
|
trimdata["sources"].push(trimsource);
|
|
}
|
|
|
|
trimsource.permutations = trimsource.permutations || {};
|
|
|
|
materials.forEach(material => {
|
|
trimsource.permutations[material.materialName] = `tfc:color_palettes/trims/${material.materialName}`;
|
|
});
|
|
JsonIO.write(trimfilePath, trimdata);
|
|
//#endregion
|
|
|
|
//#region Trim Block Atlas
|
|
//Automatically creates blocks.json file
|
|
const blockfilePath = 'kubejs/assets/minecraft/atlases/blocks.json';
|
|
let blockdata = JsonIO.read(blockfilePath) || {};
|
|
blockdata["sources"] = blockdata["sources"] || [];
|
|
|
|
let blocksource = blockdata["sources"].find(s => s.type === "paletted_permutations");
|
|
|
|
if (!blocksource) {
|
|
blocksource = {
|
|
type: "paletted_permutations",
|
|
textures: [
|
|
"trims/items/leggings_trim",
|
|
"trims/items/chestplate_trim",
|
|
"trims/items/helmet_trim",
|
|
"trims/items/boots_trim",
|
|
"tfc:item/helmet_trim",
|
|
"tfc:item/chestplate_trim",
|
|
"tfc:item/greaves_trim",
|
|
"tfc:item/boots_trim"
|
|
],
|
|
palette_key: "trims/color_palettes/trim_palette",
|
|
permutations: {}
|
|
};
|
|
blockdata["sources"].push(blocksource);
|
|
}
|
|
|
|
blocksource.permutations = blocksource.permutations || {};
|
|
|
|
materials.forEach(material => {
|
|
blocksource.permutations[material.materialName] = `tfc:color_palettes/trims/${material.materialName}`;
|
|
});
|
|
JsonIO.write(blockfilePath, blockdata);
|
|
//#endregion
|
|
|
|
//#region Trim Material Data
|
|
//Automatically creates material.json files
|
|
materials.forEach(material => {
|
|
const trimfilepaths = [
|
|
`kubejs/data/minecraft/trim_material/${material.materialName}.json`,
|
|
`kubejs/data/tfc/trim_material/${material.materialName}.json`
|
|
];
|
|
|
|
const newtrimdata = {
|
|
asset_name: material.materialName,
|
|
description: {
|
|
color: material.nameColor,
|
|
translate: `trim_material.tfc.${material.materialName}`
|
|
},
|
|
ingredient: material.itemName,
|
|
item_model_index: material.indexNumber
|
|
};
|
|
|
|
trimfilepaths.forEach(trimfilepaths => {
|
|
const existingData = JsonIO.read(trimfilepaths);
|
|
|
|
// Only write if the file is missing or contents are different
|
|
if (JSON.stringify(existingData) !== JSON.stringify(newtrimdata)) {
|
|
JsonIO.write(trimfilepaths, newtrimdata);
|
|
}
|
|
});
|
|
});
|
|
//#endregion
|
|
|
|
/*
|
|
** Depreciated. I will leave this here for future reference. **
|
|
|
|
en_us
|
|
reads the existing file, inserts new key-value pair, writes info back to the file
|
|
|
|
const langfilePath = 'kubejs/assets/tfc/lang/en_us.json';
|
|
let langdata = JsonIO.read(langfilePath) || {};
|
|
|
|
materials.forEach(material => {
|
|
langdata[`trim_material.tfc.${material.materialName}`] = material.lang_en_us;
|
|
});
|
|
|
|
JsonIO.write(langfilePath, langdata);
|
|
*/
|
|
};
|
|
//#endregion
|