Адекватное пвп с огнестрельным оружием

Версия Minecraft
1.7.10
1,193
31
182
Тут проблема выкатилась у меня, юзаю фланс, переписал его немного, но в плане пвп на сервере, это - сущий ад. Пули вылетают с задержкой, с игроками пвпшиться очень сложно, приходится расходовать много патрон, так еще и попадают криво. На клиенте все идеально (очевидно, лул)
Кто нибудь с этим работал?
Заранее спасибо)
 
87
1
12
Ого, а я вижу ты прошаренный :)
Если там везде уг, то перепиши чтоб не было уг.
И ты не прав, некоторые момент там переписаны и не вызвают краш сервера
А насчет Пинга - арендуй сервак в рашке и будет тебе счастье
 
1,193
31
182
вызвают краш сервера
А что вызывает в обычном флансе краш сервера?)
Эм, ну, неважно, в флансе пули спавнятся с какой то задержкой, меня это и бесит. В коде ентити пули можно это отрубить, но все равно, почему то стреляет хреново.
 
87
1
12
>> сталкрафте , все нормально (естественно)
потому что у них там свои разработки серверной части(ядра) - поэтому и всё норм
краш при модификации оружия, при кривом транспорте и ещё пару крашей встречал
 
1,193
31
182
Java:
    //If we couldn't get a snapshot, use normal entity hitbox calculations
                if(data == null || shouldDoNormalHitDetect)
                {
                    MovingObjectPosition mop = player.boundingBox.calculateIntercept(origin.toVec3(), Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ));
                    if(mop != null)
                    {
                        Vector3f hitPoint = new Vector3f(mop.hitVec.xCoord - posX, mop.hitVec.yCoord - posY, mop.hitVec.zCoord - posZ);
                        float hitLambda = 1F;
                        if(motion.x != 0F)
                            hitLambda = hitPoint.x / motion.x;
                        else if(motion.y != 0F)
                            hitLambda = hitPoint.y / motion.y;
                        else if(motion.z != 0F)
                            hitLambda = hitPoint.z / motion.z;
                        if(hitLambda < 0)
                            hitLambda = -hitLambda;
                        
                        hits.add(new PlayerBulletHit(new PlayerHitbox(player, new RotatedAxes(), new Vector3f(), new Vector3f(), new Vector3f(), EnumHitboxType.BODY), hitLambda));
                    }
                }
            }
            else
            {
                Entity entity = (Entity)obj;
                if(entity != this && entity != owner && !entity.isDead && (entity instanceof EntityLivingBase || entity instanceof EntityAAGun || entity instanceof EntityGrenade))
                {
                    MovingObjectPosition mop = entity.boundingBox.calculateIntercept(origin.toVec3(), Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ));
                    if(mop != null)
                    {
                        Vector3f hitPoint = new Vector3f(mop.hitVec.xCoord - posX, mop.hitVec.yCoord - posY, mop.hitVec.zCoord - posZ);
                        float hitLambda = 1F;
                        if(motion.x != 0F)
                            hitLambda = hitPoint.x / motion.x;
                        else if(motion.y != 0F)
                            hitLambda = hitPoint.y / motion.y;
                        else if(motion.z != 0F)
                            hitLambda = hitPoint.z / motion.z;
                        if(hitLambda < 0)
                            hitLambda = -hitLambda;
                        
                        hits.add(new EntityHit(entity, hitLambda));
                    }
                }
Если не работает система снапшотов, есть вот это.
Это адекватная система?)
 
Сверху