Броня в семи местах и три зоны урона
- В реестр заведены 46 предметов одежды ремейка: слот, слой, какие части тела закрывает и сколько снимает из каждого вида вреда. Данные выгружены в items.csv (extract-items.py), в коде у каждого предмета armor(...). - Семь мест: голова, лицо, грудь (2 слоя), ноги (2 слоя), руки, стопы, полный костюм. Пояс не делали - в ремейке его нет, есть только быстрая панель. - Inventory сервера: семь мест по два слоя, вещи надеваются и снимаются. - Damage: зона урона по точке попадания (голова верхние 0.4, ноги нижние 0.4), множители голова 2, тело 1, ноги 0.75; одежда снимает вред только там, где закрывает. - Пакет Attack (цель, точка попадания, рука) и клиентский патч, который его шлёт. У игрока появилась жизнь. - В items.csv добавлены колонки armor_slot, armor_layer, armor_zones. Тесты: протокол 24 + 10, сервер 85. Форк собирается чисто, 3279 классов.
This commit is contained in:
@@ -265,6 +265,26 @@ public final class RsxNetworkManager extends NetworkManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells the server where a hit landed.
|
||||
*
|
||||
* The server counts the damage, and it needs to know where the hit
|
||||
* landed: a hit on the head is worth twice a hit on the body.
|
||||
*/
|
||||
public static void reportAttack(Minecraft mc, net.minecraft.entity.Entity target) {
|
||||
RsxNetworkManager manager = active();
|
||||
if (manager == null || mc == null || target == null) {
|
||||
return;
|
||||
}
|
||||
if (mc.objectMouseOver == null
|
||||
|| mc.objectMouseOver.typeOfHit != net.minecraft.util.math.RayTraceResult.Type.ENTITY) {
|
||||
return;
|
||||
}
|
||||
net.minecraft.util.math.Vec3d hit = mc.objectMouseOver.hitVec;
|
||||
manager.send(Packets.ATTACK, new Packets.Attack(target.getEntityId(),
|
||||
(float) hit.x, (float) hit.y, (float) hit.z, Packets.Attack.HAND_MAIN));
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks the server to read its box file again.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user