- 1,560
- 86
- 204
Я сделал модель лодки, но поворот винта в Minecraft отображается неправильно. Вот как я хочу чтобы было:
А вот как получается:
Вот код модели:
Java:
public class ModelElectricBoat extends ModelBase {
ModelRenderer[] shapes = new ModelRenderer[5];
ModelRenderer[] motor = new ModelRenderer[2];
public ModelElectricBoat() {
textureWidth = 256;
textureHeight = 128;
shapes[0] = new ModelRenderer(this, 0, 0);
shapes[0].addBox(0F, 0F, 0F, 16, 1, 32);
shapes[0].setRotationPoint(-8F, 23F, -16F);
shapes[0].setTextureSize(256, 128);
shapes[0].mirror = true;
shapes[1] = new ModelRenderer(this, 96, 0);
shapes[1].addBox(0F, 0F, 0F, 1, 5, 32);
shapes[1].setRotationPoint(8F, 19F, -16F);
shapes[1].setTextureSize(256, 128);
shapes[1].mirror = true;
shapes[2] = new ModelRenderer(this, 96, 0);
shapes[2].addBox(0F, 0F, 0F, 1, 5, 32);
shapes[2].setRotationPoint(-9F, 19F, -16F);
shapes[2].setTextureSize(256, 128);
shapes[2].mirror = true;
shapes[3] = new ModelRenderer(this, 0, 33);
shapes[3].addBox(0F, 0F, 0F, 16, 5, 1);
shapes[3].setRotationPoint(-8F, 19F, 16F);
shapes[3].setTextureSize(256, 128);
shapes[3].mirror = true;
shapes[4] = new ModelRenderer(this, 0, 33);
shapes[4].addBox(0F, 0F, 0F, 16, 5, 1);
shapes[4].setRotationPoint(-8F, 19F, -17F);
shapes[4].setTextureSize(256, 128);
shapes[4].mirror = true;
motor[0] = new ModelRenderer(this, 0, 0);
motor[0].addBox(-2.5F, -6F, 0F, 5, 8, 6);
motor[0].setRotationPoint(0F, 25F, 17F);
motor[0].setTextureSize(256, 128);
motor[0].mirror = true;
motor[1] = new ModelRenderer(this, 0, 39);
motor[1].addBox(-2F, -2F, 6F, 4, 4, 1);
motor[1].setRotationPoint(0F, 25F, 17F);
motor[1].setTextureSize(256, 128);
motor[1].mirror = true;
setRotation(motor[1], 0, 1F, 4.5F); // вот тут этот поворот
}
public void render(EntityWaterVehicle entity, float f, float f1, float f2, float f3, float f4, float s)
{
super.render(entity, f, f1, f2, f3, f4, s);
setRotationAngles(f, f1, f2, f3, f4, s, entity);
for (ModelRenderer m : shapes) {
m.render(s);
}
float motorRotation = entity.prevMotorRotation + (entity.motorRotation - entity.prevMotorRotation) * f;
float bladeRotation = entity.prevBladeRotation + (entity.bladeRotation - entity.prevBladeRotation) * f;
for (ModelRenderer m : motor) {
m.render(s);
}
}
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);
}
}