Приветствую! Хочу сделать генерацию по миру камней (в виде кнопок) , как в TerraFirmaCraft, но не могу найти саму модель. Может кто-то сможет помочь. Пытаясь изменить свою получаются только краши =(
Render
Render item
Код:
package ...mod.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelObsidianTable extends ModelBase
{
//fields
ModelRenderer tabletop;
ModelRenderer legone;
ModelRenderer legtwo;
ModelRenderer legthree;
ModelRenderer legfour;
public ModelObsidianTable()
{
textureWidth = 64;
textureHeight = 32;
tabletop = new ModelRenderer(this, 0, 0);
tabletop.addBox(0F, 0F, 0F, 16, 4, 16);
tabletop.setRotationPoint(-8F, 12F, -8F);
tabletop.setTextureSize(64, 32);
tabletop.mirror = true;
setRotation(tabletop, 0F, 0F, 0F);
legone = new ModelRenderer(this, 48, 20);
legone.addBox(0F, 0F, 0F, 4, 8, 4);
legone.setRotationPoint(-8F, 16F, -8F);
legone.setTextureSize(64, 32);
legone.mirror = true;
setRotation(legone, 0F, 0F, 0F);
legtwo = new ModelRenderer(this, 32, 20);
legtwo.addBox(0F, 0F, 0F, 4, 8, 4);
legtwo.setRotationPoint(4F, 16F, 4F);
legtwo.setTextureSize(64, 32);
legtwo.mirror = true;
setRotation(legtwo, 0F, 0F, 0F);
legthree = new ModelRenderer(this, 0, 20);
legthree.addBox(4F, 0F, -8F, 4, 8, 4);
legthree.setRotationPoint(0F, 16F, 0F);
legthree.setTextureSize(64, 32);
legthree.mirror = true;
setRotation(legthree, 0F, 0F, 0F);
legfour = new ModelRenderer(this, 16, 20);
legfour.addBox(0F, 0F, 0F, 4, 8, 4);
legfour.setRotationPoint(-8F, 16F, 4F);
legfour.setTextureSize(64, 32);
legfour.mirror = true;
setRotation(legfour, 0F, 0F, 0F);
}
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, entity);
tabletop.render(f5);
legone.render(f5);
legtwo.render(f5);
legthree.render(f5);
legfour.render(f5);
}
public void renderModel(float f) {
tabletop.render(f);
legone.render(f);
legtwo.render(f);
legthree.render(f);
legfour.render(f);
}
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, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}
Код:
package ...mod.renderer;
import org.lwjgl.opengl.GL11;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import ...mod.model.ModelObsidianTable;
import ...mod.tileentity.TileEntityObsidianTable;
public class RenderObsidianTable extends TileEntitySpecialRenderer {
private static final ResourceLocation texture = new ResourceLocation(Nealecraft.modid + ":" + "textures/model/ObsidianTable.png");
private ModelObsidianTable model;
public RenderObsidianTable() {
this.model = new ModelObsidianTable();
}
@Override
public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) {
int i;
if (tileentity.getWorldObj() == null)
{
i = 0;
} else {
Block block = tileentity.getBlockType();
i = tileentity.getBlockMetadata();
if (block != null && i == 0)
{
i = tileentity.getBlockMetadata();
}
}
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
GL11.glPushMatrix();
GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
int j = 0;
if(i == 3) {
j = 270;
}
if(i == 2) {
j = 180;
}
if(i == 1) {
j = 90;
}
if(i == 0) {
j = 360;
}
GL11.glRotatef(j, 0.0F, 1.0F, 0F);
this.model.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
}
Код:
package net.nealecraft.mod.renderer;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
public class ItemRenderObsidianTable implements IItemRenderer {
TileEntitySpecialRenderer render;
private TileEntity entity;
public ItemRenderObsidianTable(TileEntitySpecialRenderer render, TileEntity entity) {
this.entity = entity;
this.render = render;
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
if(type == IItemRenderer.ItemRenderType.ENTITY)
GL11.glTranslatef(-0.5F, 0.0F, -0.5F);
this.render.renderTileEntityAt(this.entity, 0.0D, 0.0D, 0.0D, 0.0F);
}
}