package shadersmod.client;

import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.List;
import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.model.TexturedQuad;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.renderer.texture.ITextureObject;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.client.renderer.vertex.VertexFormatElement;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.ResourceLocation;

public abstract class Dummy {
	//public static Dummy instance = null; 
	
	// How to add accessor
	// 1. Add data in class DummyData. 
	// 2. Edit class transformer for target class to add getter/putter/invoker or add new fields or new functions. 
	// 3. If it is a new class transformer, add it to the list in SMCClassTransformer. 
	// 4. Add static method in this Dummy class. 
	// 5. Use dummy method in mod code. 

	// added public field : direct access
	public static SVertexBuffer get_vertexBuffer_sVertexBuffer(BufferBuilder object) { return null; }
	public static void          put_vertexBuffer_sVertexBuffer(BufferBuilder object, SVertexBuffer value) { }
	public static int    get_vertexFormat_tangentElementOffset(VertexFormat object) { return 0; }
	public static void   put_vertexFormat_tangentElementOffset(VertexFormat object, int value) { }
	public static int    get_vertexFormat_entityElementOffset (VertexFormat object) { return 0; }
	public static void   put_vertexFormat_entityElementOffset (VertexFormat object, int value) { }
	public static int    get_vertexFormat_miduvElementOffset  (VertexFormat object) { return 0; }
	public static void   put_vertexFormat_miduvElementOffset  (VertexFormat object, int value) { }
	// added public field : direct access
	public static MultiTexID get_abstractTexture_multiTex   (AbstractTexture object) { return null; }
	public static void       put_abstractTexture_multiTex   (AbstractTexture object, MultiTexID value) { }
	// added public field : direct access
	public static int    get_textureMap_atlasWidth (TextureMap object) { return 0; }
	public static void   put_textureMap_atlasWidth (TextureMap object, int value) { }
	public static int    get_textureMap_atlasHeight(TextureMap object) { return 0; }
	public static void   put_textureMap_atlasHeight(TextureMap object, int value) { }
	
	// added public virtual method : direct access
	public static void invoke_modelRenderer_resetDisplayList(ModelRenderer object) { }
	// added public virtual method : direct access
	public static MultiTexID invoke_iTextureObject_getMultiTexID(ITextureObject object) { return null; }

	// private field : call access method
//	public static Block       get_itemBlock_block             (ItemBlock object)    { return null; }
//	public static void        put_itemBlock_block             (ItemBlock object, Block block) {}
	public static int         get_entityRenderer_frameCount   (EntityRenderer object) { return 0; }
	public static void        put_entityRenderer_frameCount   (EntityRenderer object, int value) { }
	public static IntBuffer   get_vertexBuffer_rawIntBuffer   (BufferBuilder object) { return null; }
	public static void        put_vertexBuffer_rawIntBuffer   (BufferBuilder object, IntBuffer value) { }
	public static FloatBuffer get_vertexBuffer_rawFloatBuffer (BufferBuilder object) { return null; }
	public static void        put_vertexBuffer_rawFloatBuffer (BufferBuilder object, FloatBuffer value) { }
	public static int         get_vertexBuffer_vertexCount    (BufferBuilder object) { return 0; }
	public static void        put_vertexBuffer_vertexCount    (BufferBuilder object, int value) { }
	public static int         get_vertexBuffer_rawBufferIndex (BufferBuilder object) { return 0; }
	public static void        put_vertexBuffer_rawBufferIndex (BufferBuilder object, int value) { }
	public static int         get_vertexBuffer_drawMode       (BufferBuilder object) { return 0; }
	public static void        put_vertexBuffer_drawMode       (BufferBuilder object, int value) { }
	public static VertexFormatElement get_vertexBuffer_vertexElement(BufferBuilder object) { return null; }
	public static void        put_vertexBuffer_vertexElement  (BufferBuilder object, VertexFormatElement value) { }
	public static int         get_vertexBuffer_vertexElementIndex(BufferBuilder object) { return 0; }
	public static void        put_vertexBuffer_vertexElementIndex(BufferBuilder object, int value) { }
	public static String      get_textureMap_basePath         (TextureMap object) { return null; }
	public static void        put_textureMap_basePath         (TextureMap object, String value) { }
	public static List<Integer> get_vertexFormat_offsets(VertexFormat object) { return null; }
	public static void          put_vertexFormat_offsets(VertexFormat object, List value) { }
	public static int           get_vertexFormat_nextOffset(VertexFormat object) { return 0; }
	public static void          put_vertexFormat_nextOffset(VertexFormat object, int value) { }
	public static int           get_vertexFormat_colorElementOffset(VertexFormat object) { return 0; }
	public static void          put_vertexFormat_colorElementOffset(VertexFormat object, int value) { }
	public static List<Integer> get_vertexFormat_uvOffsets(VertexFormat object) { return null; }
	public static void          put_vertexFormat_uvOffsets(VertexFormat object, List value) { }
	public static int           get_vertexFormat_normalElementOffset(VertexFormat object) { return 0; }
	public static void          put_vertexFormat_normalElementOffset(VertexFormat object, int value) { }
	// private field : call access method
	public static Map         get_renderManager_entityRenderMap(RenderManager object) { return null; }
	// protected field : call access method
	public static int         get_abstractTexture_glTextureId(AbstractTexture object) { return 0; }
	public static void        put_abstractTexture_glTextureId(AbstractTexture object, int value) { }
	// private field : call access method
	public static boolean     get_texturedQuad_invertNormal(TexturedQuad object) { return false; }
	public static void        put_texturedQuad_invertNormal(TexturedQuad object, boolean value) { }
	// private method : call access method
	public static void invoke_entityRenderer_renderHand(EntityRenderer object, float par0, int par1) { }
	public static void invoke_entityRenderer_setupCameraTransform(EntityRenderer entityRenderer, float partialTicks, int pass) { }
	// private method : call access method
	public static ResourceLocation invoke_textureMap_completeResLoc(TextureMap object, ResourceLocation name, int level) { return null; }
	
	// public static method : direct access
	public static void invoke_forgeHooksClient_setRenderPass(int pass) { }
}
