Hey all! I'm trying to get a custom model from Techne loaded into the game, but its being a pain in the arse...
The attached is a screenshot of how it currently looks in-game:
Here is the code that I have:
CampfireRender.java
package Kennedyfreak.survivalchaos;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
public class CampfireRender extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler
{
public CampfireRender()
{
aModel = new ModelCampfire();
}
public void renderAModelAt(TestEntityClass tileentity1, double d, double d1, double d2, float f)
{
GL11.glPushMatrix(); // {
GL11.glTranslatef((float) d + 0.5F, (float) d1 + 0.5F, (float) d2 + 0.5F);
GL11.glPushMatrix(); // }
GL11.glPopMatrix();
GL11.glPopMatrix();
}
public void renderTileEntityAt(TileEntity tileentity, double d, double d1, double d2, float f)
{
renderAModelAt((TestEntityClass)tileentity, d, d1, d2, f);
}
private ModelCampfire aModel;
@Override
public void renderInventoryBlock(Block block, int metadata, int modelID,
RenderBlocks renderer) {
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z,
Block block, int modelId, RenderBlocks renderer) {
return false;
}
@Override
public boolean shouldRender3DInInventory() {
return true;
}
@Override
public int getRenderId() {
return 0;
}
}
survivalChaos.java
package Kennedyfreak.survivalchaos;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.src.BaseMod;
import net.minecraft.src.ModLoader;
import net.minecraft.util.DamageSource;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = "SurvivalChaos", name = "Survival Chaos", version = "0.0.1 Alpha")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class survivalchaos extends BaseMod
{
public static final String modid = "SurvivalChaos";
@Instance("SurvivalChaos")
public static survivalchaos instance;
@SidedProxy(clientSide="Kennedyfreak.survivalchaos.ClientProxy", serverSide="Kennedyfreak.survivalchaos.CommonProxy")
public static CommonProxy proxy;
public static Block campfire = new BlockCampfire(508, Material.wood);
public static int renderId = 1;
@PreInit
public void preload(FMLPreInitializationEvent preevent)
{
}
@Init
public void load(FMLInitializationEvent event)
{
proxy.registerBlocks();
proxy.addNames();
proxy.registerHandlers();
proxy.registerRenders();
}
@PostInit
public void postload(FMLPostInitializationEvent postevent)
{
}
@Override
public String getVersion() {
return "0.1 Alpha";
}
@Override
public void load() {
CampfireRender render = new CampfireRender();
renderId = ModLoader.getUniqueBlockModelID(this, true);
ModLoader.registerTileEntity(TestEntityClass.class, "CampfireTileEntity");
}
public boolean renderWorldBlock(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block, int l)
{
if(campfire instanceof BlockCampfire)
{
super.renderInvBlock(renderblocks, block, i, j);
return true;
}
return false;
}
}
BlockCampfire.java
package Kennedyfreak.survivalchaos;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockCampfire extends Block {
public BlockCampfire(int id, Material mat) {
super(id, mat);
this.setLightValue(0.7f);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F);
}
protected static int x;
protected static int y;
protected static int z;
@Override
public void onBlockAdded(World par1World, int par2, int par3, int par4)
{
if (!par1World.isRemote)
{
par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 4);
}
}
public TileEntity createNewTileEntity(World var1)
{
return new TestEntityClass();
}
@Override
public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random){
par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 4);
double random = Math.abs(par5Random.nextDouble()*10);
System.out.println("Block Updated!" + random);
if(random <= 1){
this.setLightValue(0.6F);
}
else if(random > 1 && random <= 2){
this.setLightValue(0.720F);
}
else if(random > 2 && random <= 3){
this.setLightValue(0.730F);
}
else if(random > 3 && random <= 4){
this.setLightValue(0.740F);
}
else if(random > 4 && random <= 5){
this.setLightValue(0.750F);
}
else if(random > 5 && random <= 6){
this.setLightValue(0.760F);
}
else if(random > 6 && random <= 7){
this.setLightValue(0.770F);
}
else if(random > 7 && random <= {
this.setLightValue(0.780F);
}
else if(random > 8 && random <= 9){
this.setLightValue(0.790F);
}
else if(random > 9 && random <= 10){
this.setLightValue(0.8F);
}
par1World.setBlock(par2, par3, par4, Block.wood.blockID);
par1World.setBlock(par2, par3, par4, survivalchaos.campfire.blockID);
}
@Override
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random){
int l = par1World.getBlockMetadata(par2, par3, par4);
double d0 = (double)((float)par2 + 0.5F);
double d1 = (double)((float)par3 + 0.7F);
double d2 = (double)((float)par4 + 0.5F);
double d3 = 0.2199999988079071D;
double d4 = 0.27000001072883606D;
par1World.spawnParticle("smoke", d0 - d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D);
par1World.playSound((double)((float)par2 + 0.5F), (double)((float)par3 + 0.5F), (double)((float)par4 + 0.5F),
"fire.fire", 1.0F + par5Random.nextFloat(), par5Random.nextFloat() * 0.7F + 0.3F, false);
float f = (float)par2 + par5Random.nextFloat();
float f1 = (float)par3 + par5Random.nextFloat() * 0.5F + 0.5F;
float f2 = (float)par4 + par5Random.nextFloat();
par1World.spawnParticle("largesmoke", (double)f, (double)f1, (double)f2, 0.0D, 0.0D, 0.0D);
}
@Override
public int getRenderType()
{
return survivalchaos.renderId;
}
}
ModelCampfire.java
package Kennedyfreak.survivalchaos;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelCampfire extends ModelBase
{
//fields
ModelRenderer Shape1;
ModelRenderer Shape7;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape5;
ModelRenderer Shape6;
public ModelCampfire()
{
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(0F, 0F, 0F, 2, 1, 10);
Shape1.setRotationPoint(-1F, 23.2F, -7.6F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0.2207996F, 0.5599512F, -0.0743572F);
Shape7 = new ModelRenderer(this, 0, 0);
Shape7.addBox(0F, 0F, 0F, 2, 1, 21);
Shape7.setRotationPoint(-6.533333F, 23F, 8F);
Shape7.setTextureSize(64, 32);
Shape7.mirror = true;
setRotation(Shape7, 0F, 2.391101F, 0F);
Shape2 = new ModelRenderer(this, 0, 0);
Shape2.addBox(0F, 0F, 0F, 2, 1, 9);
Shape2.setRotationPoint(5F, 22.8F, -2F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0.1858931F, -1.189716F, 0.2974289F);
Shape3 = new ModelRenderer(this, 0, 0);
Shape3.addBox(0F, 0F, 0F, 2, 1, 11);
Shape3.setRotationPoint(7F, 23.2F, 7F);
Shape3.setTextureSize(64, 32);
Shape3.mirror = true;
setRotation(Shape3, 0.2230717F, -2.379431F, -0.1858931F);
Shape4 = new ModelRenderer(this, 0, 0);
Shape4.addBox(0F, 0F, 0F, 2, 1, 12);
Shape4.setRotationPoint(-5.533333F, 23.3F, -8.466666F);
Shape4.setTextureSize(64, 32);
Shape4.mirror = true;
setRotation(Shape4, 0.1115358F, 0F, -0.0743572F);
Shape5 = new ModelRenderer(this, 0, 0);
Shape5.addBox(0F, 0F, 0F, 2, 1, 7);
Shape5.setRotationPoint(0F, 23F, 2F);
Shape5.setTextureSize(64, 32);
Shape5.mirror = true;
setRotation(Shape5, 0F, 0F, 0F);
Shape6 = new ModelRenderer(this, 0, 0);
Shape6.addBox(0F, 0F, 0F, 10, 1, 2);
Shape6.setRotationPoint(-8F, 23F, 0F);
Shape6.setTextureSize(64, 32);
Shape6.mirror = true;
setRotation(Shape6, 0F, 0.4066927F, -0.1115358F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5);
Shape1.render(f5);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Shape5.render(f5);
Shape6.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
}
}
I just need to figure out whats going on, it doesn't even look like the block at all!
Thanks,
Mrkennedyfreak