Realism Craft [1.12/1.12.2] [Разработка идет хаотично]

Обновление 24.12.17
Добавлена так называемая "система веса" - чем в зависимости от заполненности инвентаря игрок изменяет скорость своего движения.
При абсолютно пустом инвентаре игрок двигается быстрее дефолтного значения. В планах еще доделать эту систему, добавить туда звук учащенного дыхания при беге, изменение высоты прыжка, инерцию(как например, игрок не мгновенно останавливается на блоке льда)
И добавлена еще такая симпатичная моделька рюкзака, зачем он нужен, как его получить и так далее, я пока не знаю, просто захотелось сделать

 
А можно код? Хочу оценить, насколько все плохо.
 
А можно код? Хочу оценить, насколько все плохо.
Java:
public class EventWeight {

    @SubscribeEvent
    public void weightm(TickEvent.PlayerTickEvent e) {
        
        EntityPlayer player = e.player;
        int weight = 0;
        
        if(player.ticksExisted % ConfigManager.updateInv == 0) {
            for(ItemStack stack : player.inventory.mainInventory) {
                if(!stack.isEmpty()) {
                    weight += stack.getCount();
                }
            }
        }
        
        if(player.isCreative()) {
            return;
        }
        
        if(weight <= 339) {
            player.motionX *= 1.1F;
            player.motionZ *= 1.1F;
            if(player.isSprinting()) {
                player.motionX *= 1.01F;
                player.motionZ *= 1.01F;
            }
        }
        if(weight > 339 && weight <= 678) {
            player.motionX *= 0.9F;
            player.motionZ *= 0.9F;
            if(player.isSprinting()) {
                player.motionX *= 0.9F;
                player.motionZ *= 0.9F;
            }
        }
        if(weight > 678 && weight <= 1017) {
            player.motionX *= 0.8F;
            player.motionZ *= 0.8F;
            if(player.isSprinting()) {
                player.motionX *= 0.8F;
                player.motionZ *= 0.8F;
            }
        }
        if(weight > 1017 && weight <= 1356) {
            player.motionX *= 0.7F;
            player.motionZ *= 0.7F;
            player.jumpMovementFactor *= 0.5;
            if(player.isSprinting()) {
                player.motionX *= 0.7F;
                player.motionZ *= 0.7F;
                player.jumpMovementFactor *= 0.5;
            }
        }
        if(weight > 1356 && weight <= 1695) {
            player.motionX *= 0.5F;
            player.motionZ *= 0.5F;
            player.jumpMovementFactor *= 0.5;
            if(player.isSprinting()) {
                player.motionX *= 0.5F;
                player.motionZ *= 0.5F;
                player.jumpMovementFactor *= 0.5;
            }
        }
        if(weight > 1695 && weight <= 2034) {
            player.motionX *= 0.4F;
            player.motionZ *= 0.4F;
            player.jumpMovementFactor *= 0.1;
            if(player.isSprinting()) {
                player.motionX *= 0.4F;
                player.motionZ *= 0.4F;
                player.jumpMovementFactor *= 0.1;
            }
        }
    }
}
Ну вроде не особо плохо. Хотя, для тебя все, что не написано тобой - кусок говна, поэтому я знаю твой ответ заранее))
 
Java:
public class EventWeight {

    @SubscribeEvent
    public void weightm(TickEvent.PlayerTickEvent e) {
       
        EntityPlayer player = e.player;
        int weight = 0;
       
        if(player.ticksExisted % ConfigManager.updateInv == 0) {
            for(ItemStack stack : player.inventory.mainInventory) {
                if(!stack.isEmpty()) {
                    weight += stack.getCount();
                }
            }
        }
       
        if(player.isCreative()) {
            return;
        }
       
        if(weight <= 339) {
            player.motionX *= 1.1F;
            player.motionZ *= 1.1F;
            if(player.isSprinting()) {
                player.motionX *= 1.01F;
                player.motionZ *= 1.01F;
            }
        }
        if(weight > 339 && weight <= 678) {
            player.motionX *= 0.9F;
            player.motionZ *= 0.9F;
            if(player.isSprinting()) {
                player.motionX *= 0.9F;
                player.motionZ *= 0.9F;
            }
        }
        if(weight > 678 && weight <= 1017) {
            player.motionX *= 0.8F;
            player.motionZ *= 0.8F;
            if(player.isSprinting()) {
                player.motionX *= 0.8F;
                player.motionZ *= 0.8F;
            }
        }
        if(weight > 1017 && weight <= 1356) {
            player.motionX *= 0.7F;
            player.motionZ *= 0.7F;
            player.jumpMovementFactor *= 0.5;
            if(player.isSprinting()) {
                player.motionX *= 0.7F;
                player.motionZ *= 0.7F;
                player.jumpMovementFactor *= 0.5;
            }
        }
        if(weight > 1356 && weight <= 1695) {
            player.motionX *= 0.5F;
            player.motionZ *= 0.5F;
            player.jumpMovementFactor *= 0.5;
            if(player.isSprinting()) {
                player.motionX *= 0.5F;
                player.motionZ *= 0.5F;
                player.jumpMovementFactor *= 0.5;
            }
        }
        if(weight > 1695 && weight <= 2034) {
            player.motionX *= 0.4F;
            player.motionZ *= 0.4F;
            player.jumpMovementFactor *= 0.1;
            if(player.isSprinting()) {
                player.motionX *= 0.4F;
                player.motionZ *= 0.4F;
                player.jumpMovementFactor *= 0.1;
            }
        }
    }
}
Ну вроде не особо плохо. Хотя, для тебя все, что не написано тобой - кусок говна, поэтому я знаю твой ответ заранее))
а) Hard-coded константы. Но вижу у тебя конфиг. Т.е. половина на константах, другая через конфиг сетается?
б) Повторы кода.
в) Условие с проверкой на креатив можно в самое начало, чтобы не пришлось впустую итерировать инвентарь
г*) Возможно, стоит добавить проверку на сторону, а может и не стоит
 
а) Hard-coded константы. Но вижу у тебя конфиг. Т.е. половина на константах, другая через конфиг сетается?
б) Повторы кода.
в) Условие с проверкой на креатив можно в самое начало, чтобы не пришлось впустую итерировать инвентарь
г*) Возможно, стоит добавить проверку на сторону, а может и не стоит
А что такое, Hard-coded константы?
 
В данном случае сразу хочется засунуть их в какой-нибудь конфиг или static final константы для облегчения жизни в будущем.
 
Последнее редактирование:
Хз, мне меньше всего нравится "ступенчатообразная" (кучка бренчей, точнее) формула влияния веса на скорость перемещения. И в плане кода выглядит ужасно, и настраивать это запаришься, и работает оно так себе.
Откройте вы блин любой графический калькулятор и придумайте нормальную формулу.
 
Назад
Сверху