Contenttweaker Material System
Contenttweaker allows you not only to add single items to the game but whole materials! You can for example use these materials to automatically generate a new ore together with gears, ingots and the like!
There are 5 Terms that are important:
- Material: The Material you are going to add/use (e.g. Platinum) → What the items are made of
- PartType: Basically a group (e.g. Block, Item, Entity, etc) → The type of the parts
- Part: The item’s form (e.g. Gear, Rod, Ingot, etc)
- MaterialPart: Combination of Part and Material (e.g. Iron rod, Platinum Gear, etc) → Can be used to return the item as IItemStack later on.
- MaterialPartData: Some configurations → Varies by part type, check the wiki page for further information.
Example Script
#loader contenttweaker ////////// // Calls ////////// import mods.contenttweaker.MaterialSystem; import mods.contenttweaker.Material;
////////////// // Variables ////////////// var copper = MaterialSystem.getMaterialBuilder().setName("Copper").setColor(15766817).build(); var tin = MaterialSystem.getMaterialBuilder().setName("Tin").setColor(10275286).build(); var silver = MaterialSystem.getMaterialBuilder().setName("Silver").setColor(15592941).build(); var lead = MaterialSystem.getMaterialBuilder().setName("Lead").setColor(5658219).build(); var cobalt = MaterialSystem.getMaterialBuilder().setName("Cobalt").setColor(18347).build();
var metal_list = [copper, tin, silver, lead, cobalt] as Material[]; var part_names = ["dust", "gear", "plate", "nugget", "ingot", "beam", "bolt"] as string[]; var ore_types = ["ore", "poor_ore", "dense_ore"] as string[];
/////////////////////////// // Material registration ///////////////////////////
for i, metal in metal_list { metal.registerParts(part_names);
var ores = metal.registerParts(ore_types); for i, ore in ores { var oreData = ore.getData(); oreData.addDataValue("variants", "minecraft:stone,minecraft:end_stone,minecraft:netherrack"); oreData.addDataValue("hardness", "3,3,3"); oreData.addDataValue("resistance", "15,15,15"); oreData.addDataValue("harvestTool", "pickaxe,pickaxe,pickaxe"); oreData.addDataValue("harvestLevel", "1,1,1"); }
var blockData = metal.registerPart("block").getData(); blockData.addDataValue("hardness", "5"); blockData.addDataValue("resistance", "30"); blockData.addDataValue("harvestTool", "pickaxe"); blockData.addDataValue("harvestLevel", "1"); }