@Hook(returnCondition = ReturnCondition.ALWAYS, intReturnConstant = 100)
public void dismountEntity(Entity p_110145_1_)
{
double d0 = p_110145_1_.posX;
double d1 = p_110145_1_.boundingBox.minY + (double)p_110145_1_.height;
double d2 = p_110145_1_.posZ;
byte b0 = 1;
for (int i = -b0; i <= b0; ++i)
{
for (int j = -b0; j < b0; ++j)
{
if (i != 0 || j != 0)
{
int k = (int)(p_110145_1_.posX + (double)i);
int l = (int)(p_110145_1_.posZ + (double)j);
AxisAlignedBB axisalignedbb = p_110145_1_.boundingBox.getOffsetBoundingBox((double)i, 1.0D, (double)j);
if (p_110145_1_.worldObj.func_147461_a(axisalignedbb).isEmpty())
{
if (World.doesBlockHaveSolidTopSurface(p_110145_1_.worldObj, k, (int)p_110145_1_.posY, l))
{
p_110145_1_.setPosition(p_110145_1_.posX + (double)i, p_110145_1_.posY + 1.0D, p_110145_1_.posZ + (double)j);
return;
}
if (World.doesBlockHaveSolidTopSurface(p_110145_1_.worldObj, k, (int)p_110145_1_.posY - 1, l) || p_110145_1_.worldObj.getBlock(k, (int)p_110145_1_.posY - 1, l).getMaterial() == Material.water)
{
d0 = p_110145_1_.posX + 5 +(double)i;
d1 = p_110145_1_.posY + 1.0D;
d2 = p_110145_1_.posZ + (double)j;
}
}
}
}
}
p_110145_1_.setPosition(d0, d1, d2);
}