Ездовой моб
- ozick
- 24 янв. 2016 г.
- 2 мин. чтения

Я хотел бы рассказать о том, как сделать ездового моба, такого, как например: свинка, лошадь, лодка (да, это тоже моб, если вы не знали).
Т.е. то, на чем можно сидя передвигаться.
Для начала, я расскажу некоторые нюансы для модели.
У меня это строус:


Нужно правильно разместить его, относительно центра.
Сначала, нужно решить, на какой точке у моба будет сидеть игрок. У меня это где-то по центру спины. Но дело в том, что игрок "садится" на позицию, паралельную центра модели (того самого блока досок)
Здесь показано, как именно будет размещен игрок на мобе.
Он будет сидеть паралельно центру блока
Ну а высоту уже можно отрегулировать
***********
Для начала, создаем моба (здесь)
Теперь открываем код мода нашего моба
Находим в нем строку:

И удаляем ее. На ее место вставляем этот код:
//ride
public boolean interact(EntityPlayer par1EntityPlayer)
{
par1EntityPlayer.mountEntity(this);
return true;
}
//wasd Keyboard Moving public void moveEntityWithHeading(float par1, float par2)
{
if (this.riddenByEntity != null)
{
this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw;
this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F;
this.setRotation(this.rotationYaw, this.rotationPitch);
this.rotationYawHead = this.renderYawOffset = this.rotationYaw;
par1 = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F;
par2 = ((EntityLivingBase)this.riddenByEntity).moveForward;
//Block jump height
this.stepHeight = 1.0F;
//Moving speed
this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F;
if (!this.worldObj.isRemote)
{
this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue());
super.moveEntityWithHeading(par1, par2);
}
this.prevLimbSwingAmount = this.limbSwingAmount;
double d0 = this.posX - this.prevPosX;
double d1 = this.posZ - this.prevPosZ;
float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F;
if (f4 > 1.0F)
{
f4 = 1.0F;
}
this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F;
this.limbSwing += this.limbSwingAmount;
}
else
{
this.stepHeight = 0.5F;
this.jumpMovementFactor = 0.02F;
super.moveEntityWithHeading(par1, par2);
} } public void updateRiderPosition()
{
super.updateRiderPosition();
if (this.riddenByEntity != null)
{
//Ride height + 1.0D, - 1.0D...
this.riddenByEntity.setPosition(this.posX, this.posY + this.getMountedYOffset() + 0.0D + this.riddenByEntity.getYOffset(), this.posZ);
}
}
И почти все. Осталось отрегулировать высоту "сидения"

В самом конце находим эту строку, и, где показано регулируем высоту. Здесь поможет только метод "тыка". Сначала попробуйте оставить высоту 0.0D (не забудьте сохранить), зайдите в игру. С помощью яйца призыва заспавньте моба, и тыкните по нему ПКМ. Измените позицию камеры, нажав дважды F5. Сразу будет видно, подымать, или опускать. Если игрок сел ниже нужного места, к высоте прибавляем пару десятых единиц. Например, пускай будет 0.2D. Заходим еще раз в игру, и пробуем. Если все еще мало высоты - добавляем. Но может быть такое, что у вас моб "занижен", и даже при значении высота 0.0D, игрок сидит на моба слижком высоко.
В таком случае поменяйте знак перед значением с + на -
И таким же способом подбирайте высоту к своему мобу, только в обратном порядке
+ 0.0D - высоко, тогда ставим -0.2D, если все еще высоко -0.4D
Таким способом и находите нужную высоту к своему мобу.
Вот и все!
Comments