package shadersmod.client;

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

import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.WorldRenderer;
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.TextureMap;
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 SVertexBuilder get_worldRenderer_sVertexBuilder(WorldRenderer object) { return null; }
	public static void           put_worldRenderer_sVertexBuilder(WorldRenderer object, SVertexBuilder 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 int         get_entityRenderer_frameCount   (EntityRenderer object) { return 0; }
	public static void        put_entityRenderer_frameCount   (EntityRenderer object, int value) { }
	public static IntBuffer   get_worldRenderer_rawIntBuffer  (WorldRenderer object) { return null; }
	public static void        put_worldRenderer_rawIntBuffer  (WorldRenderer object, IntBuffer value) { }
	public static FloatBuffer get_worldRenderer_rawFloatBuffer(WorldRenderer object) { return null; }
	public static void        put_worldRenderer_rawFloatBuffer(WorldRenderer object, FloatBuffer value) { }
	public static int         get_worldRenderer_vertexCount   (WorldRenderer object) { return 0; }
	public static void        put_worldRenderer_vertexCount   (WorldRenderer object, int value) { }
	public static int         get_worldRenderer_rawBufferIndex(WorldRenderer object) { return 0; }
	public static void        put_worldRenderer_rawBufferIndex(WorldRenderer object, int value) { }
	public static int         get_worldRenderer_drawMode      (WorldRenderer object) { return 0; }
	public static void        put_worldRenderer_drawMode      (WorldRenderer 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 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; }
}
