From 713b63d6934449527513f3ede8d5f5345522325c Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 14 Oct 2019 10:26:06 +0000 Subject: [PATCH] RelationChanged must not be send before CharInfo. Contributed by Sahar. --- .../model/actor/instance/PlayerInstance.java | 90 +++---------------- 1 file changed, 12 insertions(+), 78 deletions(-) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index bead79e0f2..34485d0efd 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -13197,99 +13197,33 @@ public class PlayerInstance extends Playable player.sendPacket(new CharInfo(this, isInvisible() && player.canOverrideCond(PlayerCondOverride.SEE_ALL_PLAYERS))); player.sendPacket(new ExBrExtraUserInfo(this)); - - final int relation1 = getRelation(player); - final int relation2 = player.getRelation(this); - final boolean isAutoAttackable1 = isAutoAttackable(player); - final boolean isAutoAttackable2 = player.isAutoAttackable(this); - RelationCache cache = getKnownRelations().get(player.getObjectId()); - if ((cache == null) || (cache.getRelation() != relation1) || (cache.isAutoAttackable() != isAutoAttackable1)) - { - player.sendPacket(new RelationChanged(this, relation1, isAutoAttackable1)); - if (hasSummon()) - { - player.sendPacket(new RelationChanged(_summon, relation1, isAutoAttackable1)); - } - getKnownRelations().put(player.getObjectId(), new RelationCache(relation1, isAutoAttackable1)); - } - - cache = player.getKnownRelations().get(getObjectId()); - if ((cache == null) || (cache.getRelation() != relation2) || (cache.isAutoAttackable() != isAutoAttackable2)) - { - sendPacket(new RelationChanged(player, relation2, isAutoAttackable2)); - if (player.hasSummon()) - { - sendPacket(new RelationChanged(player.getSummon(), relation2, isAutoAttackable2)); - } - player.getKnownRelations().put(getObjectId(), new RelationCache(relation2, isAutoAttackable2)); - } - player.sendPacket(new GetOnVehicle(getObjectId(), getBoat().getObjectId(), _inVehiclePosition)); } else if (isInAirShip()) { setXYZ(getAirShip().getLocation()); + player.sendPacket(new CharInfo(this, isInvisible() && player.canOverrideCond(PlayerCondOverride.SEE_ALL_PLAYERS))); player.sendPacket(new ExBrExtraUserInfo(this)); - - final int relation1 = getRelation(player); - final int relation2 = player.getRelation(this); - final boolean isAutoAttackable1 = isAutoAttackable(player); - final boolean isAutoAttackable2 = player.isAutoAttackable(this); - RelationCache cache = getKnownRelations().get(player.getObjectId()); - if ((cache == null) || (cache.getRelation() != relation1) || (cache.isAutoAttackable() != isAutoAttackable1)) - { - player.sendPacket(new RelationChanged(this, relation1, isAutoAttackable1)); - if (hasSummon()) - { - player.sendPacket(new RelationChanged(_summon, relation1, isAutoAttackable1)); - } - getKnownRelations().put(player.getObjectId(), new RelationCache(relation1, isAutoAttackable1)); - } - - cache = player.getKnownRelations().get(getObjectId()); - if ((cache == null) || (cache.getRelation() != relation2) || (cache.isAutoAttackable() != isAutoAttackable2)) - { - sendPacket(new RelationChanged(player, relation2, isAutoAttackable2)); - if (player.hasSummon()) - { - sendPacket(new RelationChanged(player.getSummon(), relation2, isAutoAttackable2)); - } - player.getKnownRelations().put(getObjectId(), new RelationCache(relation2, isAutoAttackable2)); - } - player.sendPacket(new ExGetOnAirShip(this, getAirShip())); } else { player.sendPacket(new CharInfo(this, isInvisible() && player.canOverrideCond(PlayerCondOverride.SEE_ALL_PLAYERS))); player.sendPacket(new ExBrExtraUserInfo(this)); - - final int relation1 = getRelation(player); - final int relation2 = player.getRelation(this); - final boolean isAutoAttackable1 = isAutoAttackable(player); - final boolean isAutoAttackable2 = player.isAutoAttackable(this); - RelationCache cache = getKnownRelations().get(player.getObjectId()); - if ((cache == null) || (cache.getRelation() != relation1) || (cache.isAutoAttackable() != isAutoAttackable1)) + } + + final int relation = getRelation(player); + final boolean isAutoAttackable = isAutoAttackable(player); + final RelationCache cache = getKnownRelations().get(player.getObjectId()); + if ((cache == null) || (cache.getRelation() != relation) || (cache.isAutoAttackable() != isAutoAttackable)) + { + player.sendPacket(new RelationChanged(this, relation, isAutoAttackable)); + if (hasSummon()) { - player.sendPacket(new RelationChanged(this, relation1, isAutoAttackable1)); - if (hasSummon()) - { - player.sendPacket(new RelationChanged(_summon, relation1, isAutoAttackable1)); - } - getKnownRelations().put(player.getObjectId(), new RelationCache(relation1, isAutoAttackable1)); - } - - cache = player.getKnownRelations().get(getObjectId()); - if ((cache == null) || (cache.getRelation() != relation2) || (cache.isAutoAttackable() != isAutoAttackable2)) - { - sendPacket(new RelationChanged(player, relation2, isAutoAttackable2)); - if (player.hasSummon()) - { - sendPacket(new RelationChanged(player.getSummon(), relation2, isAutoAttackable2)); - } - player.getKnownRelations().put(getObjectId(), new RelationCache(relation2, isAutoAttackable2)); + player.sendPacket(new RelationChanged(_summon, relation, isAutoAttackable)); } + getKnownRelations().put(player.getObjectId(), new RelationCache(relation, isAutoAttackable)); } switch (_privateStoreType)