@Mod(modid = PercyJackson.MODID, version = PercyJackson.VERSION)
public class PercyJackson {
// Mod Info
public static final String MODID = "Percy Jackson";
public static final String VERSION = "1.0";
// Blocks
public static final Block Marble = new BlockMarble(2000, Material.rock);
// Creative Tab Greek Weapons
public static CreativeTabs Weapons = new CreativeTabs("Greek Weapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Roman Weapons
public static CreativeTabs tools = new CreativeTabs("Roman Weapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Blocks
public static CreativeTabs Blocks = new CreativeTabs("Percy Jackson Blocks") {
public Item getTabIconItem() {
return new Item();
}
};
// Instance
@Instance(value = MODID)
public static PercyJackson instance;
The Meaning of Life, the Universe, and Everything.
Location:
Watching You
Join Date:
7/9/2014
Posts:
61
Location:
Right Behind You
Minecraft:
Rippingtax
Member Details
I got this crash report:
---- Minecraft Crash Report ----
// On the bright side, I bought you a teddy bear!
Time: 12/22/14 8:11 PM
Description: There was a severe problem during mod loading that has caused the game to fail
cpw.mods.fml.common.LoaderException: java.lang.Error: Unresolved compilation problems:
farmland cannot be resolved or is not a field
dirt cannot be resolved or is not a field
command_block cannot be resolved or is not a field
grass cannot be resolved or is not a field
command_block cannot be resolved or is not a field
at cpw.mods.fml.common.LoadController.transition(LoadController.java:162)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:573)
at net.minecraft.client.Minecraft.run(Minecraft.java:880)
at net.minecraft.client.main.Main.main(Main.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.lang.Error: Unresolved compilation problems:
farmland cannot be resolved or is not a field
dirt cannot be resolved or is not a field
command_block cannot be resolved or is not a field
grass cannot be resolved or is not a field
command_block cannot be resolved or is not a field
at com.example.PercyJackson.PercyJackson.init(PercyJackson.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:690)
... 10 more
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Mac OS X (x86_64) version 10.10.1
Java Version: 1.7.0_71, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 942587808 bytes (898 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.03 FML v7.2.217.1147 Minecraft Forge 10.12.2.1147 4 mods loaded, 4 mods active
mcp{9.03} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized
FML{7.2.217.1147} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.2.1147.jar) Unloaded->Constructed->Pre-initialized->Initialized
Forge{10.12.2.1147} [Minecraft Forge] (forgeSrc-1.7.2-10.12.2.1147.jar) Unloaded->Constructed->Pre-initialized->Initialized
Percy Jackson{1.0} [Example Mod] (bin) Unloaded->Constructed->Pre-initialized->Errored
public IIcon Side0;
public IIcon Side1;
public IIcon Side2;
public IIcon Side3;
public IIcon Side4;
public IIcon Side5;
public BlockMarble(int i, Material rock) {
super(rock);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setStepSound(soundTypeStone);
this.setHardness(4f);
this.setResistance(10f);
this.setLightLevel(0.8f);
this.setBlockName("Marble");
}
@Mod(modid = PercyJackson.MODID, version = PercyJackson.VERSION)
public class PercyJackson {
// Mod Info
public static final String MODID = "PercyJackson";
public static final String VERSION = "1.0";
// Blocks
public static final Block Marble = new BlockMarble(2000, Material.rock);
// Creative Tab Greek Weapons
public static CreativeTabs Gweapons = new CreativeTabs("greekWeapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Roman Weapons
public static CreativeTabs Rweapons = new CreativeTabs("romanWeapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Blocks
public static CreativeTabs PJBlocks = new CreativeTabs("percyJacksonBlocks") {
public Item getTabIconItem() {
return new Item();
}
};
// Instance
@Instance(value = MODID)
public static PercyJackson instance;
]
The pictures are in a package in the main src folder called assets.PercyJackson.textures.blocks and are aptly named: Side0 Side1 Side2 Side3 Side4 Side5
The assets.PercyJackson.textures.blocks package is in the same folder as the com.example.PercyJackson package.
The Meaning of Life, the Universe, and Everything.
Join Date:
8/20/2014
Posts:
51
Location:
In The Cloud
Minecraft:
MESSpace
Member Details
I'm not sure if you accidentally left put part of the code, but I can't seem to find the crafting recipes that were in the original post of this thread...
Anyways, the pictures need to be in src/main/resources/assets/percyjackson/textures/blocks
Basically the assets folder needs to be inside of the resources folder that is located in src/main.
Rollback Post to RevisionRollBack
If you need help with modding, feel free to message me!
Click The Achievement Below To See My Stuff!
Also, rename your asset directory from "assets.PercyJackson.textures.blocks" to "assets.percyjackson.textures.blocks" - for some reason, I've had trouble with capital letters in the resource locations.
You should also use a language file instead of using the old LanguageRegistry - see [url=http://www.minecraftforge.net/wiki/Localizing]this tutorial[/url]
package com.example.PercyJackson;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import com.example.PercyJackson.blocks.BlockMarble;
import com.example.PercyJackson.proxy.ProxyCommon;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = PercyJackson.MODID, version = PercyJackson.VERSION)
public class PercyJackson {
// Mod Info
public static final String MODID = "Percy Jackson";
public static final String VERSION = "1.0";
// Blocks
public static final Block Marble = new BlockMarble(2000, Material.rock);
// Creative Tab Greek Weapons
public static CreativeTabs Weapons = new CreativeTabs("Greek Weapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Roman Weapons
public static CreativeTabs tools = new CreativeTabs("Roman Weapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Blocks
public static CreativeTabs Blocks = new CreativeTabs("Percy Jackson Blocks") {
public Item getTabIconItem() {
return new Item();
}
};
// Instance
@Instance(value = MODID)
public static PercyJackson instance;
// Sided Proxy
@SidedProxy(clientSide = "com.example.PercyJackson.proxy.ProxyClient", serverSide = "com.example.PercyJackson.proxy.proxyCommon")
public static ProxyCommon proxy;
// Eventhandler
@EventHandler
public void init(FMLInitializationEvent event) {
// Crafting Recipes
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.farmland, 7),
Blocks.dirt, Items.stone_hoe);
GameRegistry.addShapedRecipe(new ItemStack(Blocks.command_block),
"XYX", "XYX", "XYX", 'X', Items.stick, 'Y', Items.apple);
// Smelting Recipes
GameRegistry.addSmelting(Blocks.grass, new ItemStack(Items.diamond),
300f);
GameRegistry.addSmelting(Items.stick, new ItemStack(Items.iron_ingot),
600f);
GameRegistry.addSmelting(Blocks.command_block, new ItemStack(
Items.arrow), 9000f);
}
// Eventhandler
@EventHandler
public void load1(FMLInitializationEvent event) {
proxy.registerRenderers();
};
// Eventhandler
@EventHandler
public void load(FMLInitializationEvent event) {
LanguageRegistry.instance().addStringLocalization(
"itemGroup.Greek Weapons", "en_US", "Greek Weapons");
LanguageRegistry.instance().addStringLocalization(
"itemGroup.Roman Weapons", "en_US", "Roman Weapons");
LanguageRegistry.instance().addStringLocalization(
"itemGroup.Percy Jackson Blocks", "en_US",
"Percy Jackson Blocks");
}
}
and I also got it for every red underlined block. the error was: [insert block here] cannot be resolved or is not a field
---- Minecraft Crash Report ----
// On the bright side, I bought you a teddy bear!
Time: 12/22/14 8:11 PM
Description: There was a severe problem during mod loading that has caused the game to fail
cpw.mods.fml.common.LoaderException: java.lang.Error: Unresolved compilation problems:
farmland cannot be resolved or is not a field
dirt cannot be resolved or is not a field
command_block cannot be resolved or is not a field
grass cannot be resolved or is not a field
command_block cannot be resolved or is not a field
at cpw.mods.fml.common.LoadController.transition(LoadController.java:162)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:573)
at net.minecraft.client.Minecraft.run(Minecraft.java:880)
at net.minecraft.client.main.Main.main(Main.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.lang.Error: Unresolved compilation problems:
farmland cannot be resolved or is not a field
dirt cannot be resolved or is not a field
command_block cannot be resolved or is not a field
grass cannot be resolved or is not a field
command_block cannot be resolved or is not a field
at com.example.PercyJackson.PercyJackson.init(PercyJackson.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:690)
... 10 more
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Mac OS X (x86_64) version 10.10.1
Java Version: 1.7.0_71, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 942587808 bytes (898 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.03 FML v7.2.217.1147 Minecraft Forge 10.12.2.1147 4 mods loaded, 4 mods active
mcp{9.03} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized
FML{7.2.217.1147} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.2.1147.jar) Unloaded->Constructed->Pre-initialized->Initialized
Forge{10.12.2.1147} [Minecraft Forge] (forgeSrc-1.7.2-10.12.2.1147.jar) Unloaded->Constructed->Pre-initialized->Initialized
Percy Jackson{1.0} [Example Mod] (bin) Unloaded->Constructed->Pre-initialized->Errored
Try putting all of your recipes inside of a block of code like this one:
public PercyJackson() {
//Crafting recipes go here
}
I have it that way for my mod and the recipes work just fine!
Click The Achievement Below To See My Stuff!
package com.example.PercyJackson.blocks;
import com.example.PercyJackson.PercyJackson;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.IIcon;
public class BlockMarble extends Block {
public IIcon Side0;
public IIcon Side1;
public IIcon Side2;
public IIcon Side3;
public IIcon Side4;
public IIcon Side5;
public BlockMarble(int i, Material rock) {
super(rock);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setStepSound(soundTypeStone);
this.setHardness(4f);
this.setResistance(10f);
this.setLightLevel(0.8f);
this.setBlockName("Marble");
}
public void registerBlockIcons(IIconRegister icon) {
Side0 = icon.registerIcon(PercyJackson.MODID + ":Side0");
Side1 = icon.registerIcon(PercyJackson.MODID + ":Side1");
Side2 = icon.registerIcon(PercyJackson.MODID + ":Side2");
Side3 = icon.registerIcon(PercyJackson.MODID + ":Side3");
Side4 = icon.registerIcon(PercyJackson.MODID + ":Side4");
Side5 = icon.registerIcon(PercyJackson.MODID + ":Side5");
}
public IIcon getIcon(int side, int meta)
{
if (side == 0) {
return Side0;
} else if (side == 1) {
return Side1;
}else if (side == 2) {
return Side2;
}else if (side == 3) {
return Side3;
}else if (side == 4) {
return Side4;
}else if (side == 5) {
return Side5;
}
return null;
}
}
And the texture is still pink and black squares!!!!!!! (I'll post the rest of the code files later)
Here is the creative tab that its in:
package com.example.PercyJackson.CreativeTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
public class PJBlocks extends CreativeTabs {
public PJBlocks(int par1, String par2Str) {
super(par1, par2Str);
}
@Override
public Item getTabIconItem() {
return null;
}
}
Here is the Main Java class:
package com.example.PercyJackson;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import com.example.PercyJackson.CreativeTabs.PJBlocks;
import com.example.PercyJackson.blocks.BlockMarble;
import com.example.PercyJackson.proxy.ProxyCommon;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = PercyJackson.MODID, version = PercyJackson.VERSION)
public class PercyJackson {
// Mod Info
public static final String MODID = "PercyJackson";
public static final String VERSION = "1.0";
// Blocks
public static final Block Marble = new BlockMarble(2000, Material.rock);
// Creative Tab Greek Weapons
public static CreativeTabs Gweapons = new CreativeTabs("greekWeapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Roman Weapons
public static CreativeTabs Rweapons = new CreativeTabs("romanWeapons") {
public Item getTabIconItem() {
return new Item();
}
};
// Creative Tab Blocks
public static CreativeTabs PJBlocks = new CreativeTabs("percyJacksonBlocks") {
public Item getTabIconItem() {
return new Item();
}
};
// Instance
@Instance(value = MODID)
public static PercyJackson instance;
// Sided Proxy
@SidedProxy(clientSide = "com.example.PercyJackson.proxy.ProxyClient", serverSide = "com.example.PercyJackson.proxy.proxyCommon")
public static ProxyCommon proxy;
// Eventhandler
@SuppressWarnings("deprecation")
@EventHandler
public void init(FMLInitializationEvent event) {
// Crafting Recipes
GameRegistry.registerBlock(Marble, "Marble").setCreativeTab(PJBlocks);
LanguageRegistry.addName(Marble, "Marble");
}
// Eventhandler
@EventHandler
public void load1(FMLInitializationEvent event) {
proxy.registerRenderers();
};
// Eventhandler
@EventHandler
public void load(FMLInitializationEvent event) {
LanguageRegistry.instance().addStringLocalization(
"itemGroup.greekWeapons", "en_US", "Greek Weapons");
LanguageRegistry.instance().addStringLocalization(
"itemGroup.romanWeapons", "en_US", "Roman Weapons");
LanguageRegistry.instance().addStringLocalization(
"itemGroup.percyJacksonBlocks", "en_US",
"Percy Jackson Blocks");
}
}
And here is the mcmod.info
[
{
"modid": "PercyJackson",
"name": "Example Mod",
"description": "Most epic Percy Jackson Mod",
"version": "${1.0}",
"mcversion": "${1.7.2}",
"url": "www.iamthethomas.weebly.com",
"updateUrl": "www.iamthethomas.weebly.com",
"authorList": ["Rippingtax"],
"credits": "Rippingtax & Kathleen",
"logoFile": "",
"screenshots": [],
"dependencies": []
}
]
The pictures are in a package in the main src folder called assets.PercyJackson.textures.blocks and are aptly named: Side0 Side1 Side2 Side3 Side4 Side5
The assets.PercyJackson.textures.blocks package is in the same folder as the com.example.PercyJackson package.
Anyways, the pictures need to be in src/main/resources/assets/percyjackson/textures/blocks
Basically the assets folder needs to be inside of the resources folder that is located in src/main.
Click The Achievement Below To See My Stuff!
Here is a screen shot.
See my previous post on details.
Click The Achievement Below To See My Stuff!
You need to add the "percyjackson:" part so Minecraft will recognise the texture as part of your assets
ClothingCraft - Highly customizable and realistic clothing! No more silly leather armor!
P.S. You should rename your packages - why do you have "example" in it?
ClothingCraft - Highly customizable and realistic clothing! No more silly leather armor!
?
ClothingCraft - Highly customizable and realistic clothing! No more silly leather armor!