Files
sevtech-ages-1.12.2/scripts/crafttweaker/classes/utils/unifier.zs
2025-07-23 08:37:00 +03:00

147 lines
4.4 KiB
Plaintext

#priority 2750
/*
SevTech: Ages Unifier Class Script
Note: These scripts are created and for the usage in SevTech: Ages and other
modpacks curated by DarkPacks. You can use these scripts for reference and for
learning but not for copying and pasting and claiming as your own.
*/
import crafttweaker.item.IItemStack;
import crafttweaker.liquid.ILiquidStack;
import crafttweaker.oredict.IOreDictEntry;
import mods.chisel.Carving;
zenClass Unifier {
// In order of priority
var defaultPreferredMods as string[] = [
"minecraft",
"contenttweaker",
"immersiveengineering",
"mekanism"
];
zenConstructor() {
}
/*
Figure out which item is preferred
The array should be in order of priority, so if its found, return immediately
as this will be the most preferred option
*/
function getPreferredItem(oreDictEntry as IOreDictEntry) as IItemStack {
return getPreferredItem(oreDictEntry, defaultPreferredMods);
}
function getPreferredItem(oreDictEntry as IOreDictEntry, preferredMods as string[]) as IItemStack {
for modName in preferredMods {
for item in oreDictEntry.items {
if (item.definition.owner == modName) {
return item;
}
}
}
// If there is still no item found, take the first availble
return oreDictEntry.firstItem;
}
function clearOreDict(oreDictEntry as IOreDictEntry) {
unify(oreDictEntry, null, null);
}
function clearOreDict(oreDictEntry as IOreDictEntry, liquid as ILiquidStack) {
unify(oreDictEntry, null, liquid);
}
function clearOreDict(oreDictEntry as IOreDictEntry, preferredItem as IItemStack, liquid as ILiquidStack) {
unify(oreDictEntry, preferredItem, liquid);
}
function unify(oreDictEntry as IOreDictEntry) {
unify(oreDictEntry, getPreferredItem(oreDictEntry), null);
}
function unify(oreDictEntry as IOreDictEntry, liquid as ILiquidStack) {
unify(oreDictEntry, getPreferredItem(oreDictEntry), liquid);
}
function unify(oreDictEntry as IOreDictEntry, preferredItem as IItemStack) {
unify(oreDictEntry, preferredItem, null);
}
function unify(oreDictEntry as IOreDictEntry, preferredItem as IItemStack, liquid as ILiquidStack) {
var hasLiquid = liquid as bool;
var vgName = "vg_" + oreDictEntry.name.toLowerCase();
if (!isNull(preferredItem) & chiselBlocks.keys has oreDictEntry) {
print("[Chisel] Removing " + oreDictEntry.name);
Carving.removeGroup(oreDictEntry.name);
print("[Chisel] Creating " + vgName);
Carving.addGroup(vgName);
print("[Chisel] Adding " + preferredItem.definition.id + " to " + vgName);
Carving.addVariation(vgName, preferredItem);
}
for item in oreDictEntry.items {
if (!item.matches(preferredItem)) {
oreDictEntry.remove(item);
furnace.remove(item);
furnace.setFuel(item, 0); // Setting the burnTime to 0 will stop the input from being a fuel item
/*
Remove from mod integrations
*/
// ==================================
// Applied Energistics 2
appliedEnergistics.removeGrindstone(item);
appliedEnergistics.removeInscribe(item);
// ==================================
// Astral Sorcery
astralSorcery.removeGrindstone(item);
// ==================================
// Immersive Engineering
immersiveEngineering.removeAlloy(item);
immersiveEngineering.removeArcFurn(item);
immersiveEngineering.removeCrusher(item);
immersiveEngineering.removeCrusherByInput(item);
immersiveEngineering.removePress(item);
// ==================================
// Just Enough Items
mods.jei.JEI.removeAndHide(item);
// ==================================
// Mekanism
mekanism.removeChemicalCrystallizer(item);
mekanism.removeChemicalInjection(item);
mekanism.removeCombiner(item);
mekanism.removeCrusher(item);
mekanism.removeSmelter(item);
mekanism.removeEnrichment(item);
mekanism.removeInfusion(item);
mekanism.removeCompressor(item);
mekanism.removeSawmill(item);
mekanism.removePurification(item);
// ==================================
// Tinker's Construct
tinkers.removeCastingBasin(item);
tinkers.removeCastingTable(item);
if (hasLiquid) {
tinkers.removeMelting(liquid, item);
}
if (item.definition.owner == "chisel" & chiselBlocks.keys has oreDictEntry) {
print("[Chisel] Adding " + item.definition.id + " to " + vgName);
Carving.addVariation(vgName, item);
}
}
}
if (!isNull(preferredItem)) {
scripts.crafttweaker.utils.ensureOreDict(oreDictEntry, preferredItem);
}
}
}