package imdutch21.oilcraft.proxy;
import imdutch21.oilcraft.block.OCBlock;
import imdutch21.oilcraft.block.OCBlockRegistry;
import imdutch21.oilcraft.client.render.RenderFactoryEntityGooBall;
import imdutch21.oilcraft.entity.EntityGooBall;
import imdutch21.oilcraft.fluids.OCFluidBlock;
import imdutch21.oilcraft.item.OCItem;
import imdutch21.oilcraft.item.OCItemRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.StateMapperBase;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
/**
* Created by Bart on 12/02/2016.
*/
public class ClientProxy extends CommonProxy {
@Override
public void initModels() {
initBlockModels();
initItemModels();
}
@Override
public void initRenderers() {
super.initRenderers();
RenderingRegistry.registerEntityRenderingHandler(EntityGooBall.class, new RenderFactoryEntityGooBall());
}
private void initBlockModels() {
for (Block block : OCBlockRegistry.BLOCKS) {
if (block instanceof OCFluidBlock){
registerFluidBlockRendering(block, block.getRegistryName().toString().replace("oilcraft:", ""));
} else if (block instanceof OCBlock) {
for (int i : ((OCBlock) block).modelMetas()) {
ModelBakery.registerItemVariants(Item.getItemFromBlock(block), block.getRegistryName());
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), i, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}
}
}
}
private void initItemModels() {
for (Item item : OCItemRegistry.ITEMS) {
if (item instanceof OCItem) {
for (int i : ((OCItem) item).modelMetas()) {
ModelBakery.registerItemVariants(item, new ResourceLocation("oilcraft:" + ((OCItem)item).itemName(i)));
ModelLoader.setCustomModelResourceLocation(item, i, new ModelResourceLocation("oilcraft:" + ((OCItem)item).itemName(i), "inventory"));
}
}
}
}
@Override
public void registerFluidBlockRendering(Block block, String name) {
final ModelResourceLocation fluidLocation = new ModelResourceLocation("oilcraft:fluids", name);
// use a custom state mapper which will ignore the LEVEL property
ModelLoader.setCustomStateMapper(block, new StateMapperBase()
{
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state)
{
return fluidLocation;
}
});
}
}