- 435
- 1
Привет всем. В общем появилась нужда грузить techne модели загрузчиком в виде файлов формата .tcn . С загрузкой разобрался, но встал вопрос о текстурах. майновская текстурмапа ложится очень криво.
Скрины:
Без текстуры
С текстурой
Рендер:
В общем вопрос - как правильно наложить текстуру?
Скрины:
Без текстуры
Рендер:
Код:
package buildBox;
import mods.GLLoader.GLModel;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.client.model.techne.TechneModel;
import org.lwjgl.opengl.GL11;
public class RendererBlockModel extends TileEntitySpecialRenderer
{
public RendererBlockModel(int num)
{
super();
BuildBox.model[num] = AdvancedModelLoader.loadModel("/assets/buildBox/models/"+BuildBox.modelBlockIDs[num]+".tcn");
BuildBox.texture[num] = new ResourceLocation("buildbox:textures/blocksModels/"+BuildBox.modelBlockIDs[num]+".png");
}
public Minecraft mc = Minecraft.getMinecraft();
public void renderTileEntityAt(TileEntity tileEntity, double d1, double d2, double d3, float f)
{
this.renderTileEntity((TileEntityBlockModel)tileEntity, d1, d2, d3, f);
}
public void renderTileEntity(TileEntityBlockModel tileEntity, double d1, double d2, double d3, float f)
{
int metadata = tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
GL11.glPushMatrix();
GL11.glTranslatef((float)d1 + 0.5F, (float)d2 + 0.04F, (float)d3 + 0.5F);
GL11.glRotatef(-180F, 0F, 0F, 1F);
if(metadata == 1)
{
GL11.glRotatef(-180F, 0, 1, 0);
}
if(metadata == 4)
{
GL11.glRotatef(-90F, 0, 1, 0);
}
if(metadata == 7)
{
GL11.glRotatef(360F, 0, 1, 0);
}
if(metadata == 10)
{
GL11.glRotatef(-270F, 0, 1, 0);
}
if(metadata == 2)
{
GL11.glRotatef(180F, 0, 1, 0);
GL11.glRotatef(90F, 1, 0, 0);
GL11.glTranslatef(0F, 0.46F, 0.46F);
}
if(metadata == 5)
{
GL11.glRotatef(270F, 0, 1, 0);
GL11.glRotatef(90F, 1, 0, 0);
GL11.glTranslatef(0F, 0.46F, 0.46F);
}
if(metadata == 8)
{
GL11.glRotatef(360F, 0, 1, 0);
GL11.glRotatef(90F, 1, 0, 0);
GL11.glTranslatef(0F, 0.46F, 0.46F);
}
if(metadata == 11)
{
GL11.glRotatef(90F, 0, 1, 0);
GL11.glRotatef(90F, 1, 0, 0);
GL11.glTranslatef(0F, 0.46F, 0.46F);
}
if(metadata == 0)
{
GL11.glRotatef(180F, 1, 0, 0);
GL11.glTranslatef(0F, 0.925F, 0F);
}
if(metadata == 3)
{
GL11.glRotatef(180F, 1, 0, 0);
GL11.glRotatef(270F, 0, 1, 0);
GL11.glTranslatef(0F, 0.925F, 0F);
}
if(metadata == 6)
{
GL11.glRotatef(180F, 1, 0, 0);
GL11.glRotatef(180F, 0, 1, 0);
GL11.glTranslatef(0F, 0.925F, 0F);
}
if(metadata == 9)
{
GL11.glRotatef(180F, 1, 0, 0);
GL11.glRotatef(90F, 0, 1, 0);
GL11.glTranslatef(0F, 0.925F, 0F);
}
GL11.glScalef(0.0625F, 0.0625F, 0.0625F);
this.bindTexture(BuildBox.texture[tileEntity.id]);
BuildBox.model[tileEntity.id].renderAll();
GL11.glPopMatrix();
}
}
В общем вопрос - как правильно наложить текстуру?