Поясните значение строк + Положение рук от 3 лица (доп. вопрос)

В общем, тут наткнулся на такой код, хотел всучить игроку камеру, взял код у лука, теперь игрок держит её более менее нормально, НО... двумя руками. С одной стороны он типо её поддерживает, с другой когда от бежит хотел чтобы он просто взял её в одну руку, а именно правую. 
Код:
   if (!(event.entityPlayer.inventory.getCurrentItem() == null) && event.entityPlayer.inventory.getCurrentItem().getItem() == ModCore.VideoCamera) //С этим понятно, если в руке ничего кроме камеры нет
        {
            java.lang.reflect.Field f = event.renderer.getClass().getDeclaredField("modelBipedMain"); //Не понял
            f.setAccessible(true); //тоже не понял
            Object val = f.get(event.renderer); //Вообще не понял
            ModelBiped modelBipedMain = (ModelBiped)val; //Тут типо указание модели и переменной (видимо)
            modelBipedMain.aimedBow = false; //Тут переменная и указание.. эм, тоже непонятно
        }

Код если честно, я не понял, поэтому прошу вас, поясните пожалуйста как вы понимаете его. Пожалуйста. много страдал когда экспериментировал, пробовал google переводчик (так как по моему собственному переводу ничего не понял) Прошу вас, поясните.
 
Если в руках не нулл и в руках камера...
Достаем поле из класса рендера род именем modelBipedMain...
Делаем чтобы поле можно было изменять...
Получаем объект.
Приводим тип к ModelBiped.
Ставим прицеливание с лука(положение рук).
 
В общем я понял как это всё работает, правда вот фигня. Решил сделать только одну руку, сделал копию modelBiped (назвал ModelPlayerForCamera)
Код:
 if (!(event.entityPlayer.inventory.getCurrentItem() == null) && event.entityPlayer.inventory.getCurrentItem().getItem() == ModCore.VideoCamera)
        {
            java.lang.reflect.Field f = event.renderer.getClass().getDeclaredField("modelBipedMain");
            f.setAccessible(true);
            Object val = f.get(event.renderer);
            ModelPlayerForCamera modelPlayerForCamera = (ModelPlayerForCamera)val; //Указал новую модель, с новой анимацией
            modelPlayerForCamera.aimedCamera = true; //указал нужную анимацию
        }
В копии модельки сделал нужную анимацию:
Код:
      if (this.aimedCamera) {
            f6 = 0.0F;
            f7 = 0.0F;
            this.bipedRightArm.rotateAngleZ = 0.0F;
            this.bipedRightArm.rotateAngleY = -(0.1F - f6 * 0.6F) + this.bipedHead.rotateAngleY;
            this.bipedRightArm.rotateAngleX = -((float)Math.PI / 2F) + this.bipedHead.rotateAngleX;
            this.bipedRightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F;
            this.bipedRightArm.rotateAngleZ += MathHelper.cos(par3 * 0.09F) * 0.05F + 0.05F;
            this.bipedRightArm.rotateAngleX += MathHelper.sin(par3 * 0.067F) * 0.05F;
        }
Вот... но когда беру камеру в руку и ставлю 3 вид, крашит. Понял что крашит из-за указанной мною "не той модельки". Правильно ли я всё делаю, ответьте пожалуйста.
[merge_posts_bbcode]Добавлено: 09.01.2015 01:33:26[/merge_posts_bbcode]

Если менять анимацию в ванильке, то всё работает шикарно, но вот, не хотелось бы ванильку менять. Надо как-то файлом мода дополнить файлик modelBiped новой анимацией. Да вот как.... не знаю.
 
Эт че за фигня?
!(event.entityPlayer.inventory.getCurrentItem() == null)
Можно заменить на человеческое
event.entityPlayer.inventory.getCurItem()!=null
 
Назад
Сверху