2022-10-29 18:23:48 +02:00

83 lines
2.1 KiB
Java

package com.hbm.inventory.material;
import com.hbm.inventory.OreDictManager.DictFrame;
/**
* Encapsulates most materials that are currently listed as DictFrames, even vanilla ones.
* @author hbm
*
*/
public class NTMMaterial {
public final int id;
public String[] names;
public MaterialShapes[] shapes = new MaterialShapes[0];
public boolean omitItemGen = false;
public SmeltingBehavior smeltable = SmeltingBehavior.NOT_SMELTABLE;
public int solidColor = 0xFF4A00; //TODO
public int moltenColor = 0xFF4A00;
public NTMMaterial smeltsInto;
public int convIn;
public int convOut;
public NTMMaterial(int id, DictFrame dict) {
this.names = dict.mats;
this.id = id;
this.smeltsInto = this;
this.convIn = 1;
this.convOut = 1;
for(String name : dict.mats) {
Mats.matByName.put(name, this);
}
Mats.orderedList.add(this);
Mats.matById.put(id, this);
}
public String getUnlocalizedName() {
return "hbmmat." + this.names[0].toLowerCase();
}
public NTMMaterial setConversion(NTMMaterial mat, int in, int out) {
this.smeltsInto = mat;
this.convIn = in;
this.convOut = out;
return this;
}
/** Shapes for autogen */
public NTMMaterial setShapes(MaterialShapes... shapes) {
this.shapes = shapes;
return this;
}
/** Turn off autogen for this material, use this for vanilla stuff */
public NTMMaterial omitAutoGen() {
this.omitItemGen = true;
return this;
}
/** Defines smelting behavior */
public NTMMaterial smeltable(SmeltingBehavior behavior) {
this.smeltable = behavior;
return this;
}
public NTMMaterial setMoltenColor(int color) {
this.moltenColor = color;
return this;
}
public static enum SmeltingBehavior {
NOT_SMELTABLE, //anything that can't be smelted or otherwise doesn't belong in a smelter, like diamond. may also include things that are smeltable but turn into a different type
VAPORIZES, //can't be smelted because the material would skadoodle
BREAKS, //can't be smelted because the material doesn't survive the temperatures
SMELTABLE, //mostly metal
ADDITIVE //stuff like coal which isn't smeltable but can be put in a crucible anyway
}
}