diff --git a/src/resources/collections/SWGList.java b/src/resources/collections/SWGList.java index ad82222cf..845c7a8f9 100644 --- a/src/resources/collections/SWGList.java +++ b/src/resources/collections/SWGList.java @@ -157,10 +157,18 @@ public class SWGList extends AbstractList implements Encodable { public byte[] encode() { int size = list.size(); - if (size == 0 || dataSize == 0) { + if (size == 0) { return new byte[8]; } - + + if (size != data.size()) { + // Data got out of sync with the list, so lets clean that up! + data.clear(); + for (int i = 0; i < size; i++) { + addData(i, list.get(i), (byte) 0); + } + } + ByteBuffer buffer = ByteBuffer.allocate(4 + (noUpdates ? 0 : 4) + dataSize).order(ByteOrder.LITTLE_ENDIAN); buffer.putInt(size); diff --git a/src/resources/collections/SWGMap.java b/src/resources/collections/SWGMap.java index 37b40e7cc..6b3f2ab96 100644 --- a/src/resources/collections/SWGMap.java +++ b/src/resources/collections/SWGMap.java @@ -152,7 +152,7 @@ public class SWGMap extends AbstractMap implements Encodable { public byte[] encode() { int size = map.size(); - if (size == 0 || dataSize == 0) { + if (size == 0) { return new byte[8]; } @@ -160,7 +160,15 @@ public class SWGMap extends AbstractMap implements Encodable { buffer.putInt(size); buffer.putInt(updateCount); - + + if (data.size() != size) { + // Data got out of sync with the map, so lets clean that up! + data.clear(); + for (Entry entry : map.entrySet()) { + addData(entry.getKey(), entry.getValue(), (byte) 0); + } + } + for (byte[] bytes : data.values()) { buffer.put((byte) 0); buffer.put(bytes); diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index ed5c74ace..5dc0245f2 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -665,7 +665,7 @@ public abstract class SWGObject implements Serializable, Comparable { // First create the objects in the slots for (SWGObject slotObject : slots.values()) { if (slotObject != null) { - // System.out.println("Sending slotObj " + slotObject + " to " + target); + //Log.d("Sending slotObj " + slotObject + " to " + target); slotObject.createObject(target); } } @@ -674,7 +674,7 @@ public abstract class SWGObject implements Serializable, Comparable { for (SWGObject containedObject : containedObjects.values()) { if (containedObject != null) { //Log.d("SWGObject", "Sending containedObj " + containedObject + " to " + target); - Log.d("SWGObject", "Sending to location " + containedObject.getLocation()); + //Log.d("SWGObject", "Sending to location " + containedObject.getLocation()); containedObject.createObject(target); } } diff --git a/src/resources/objects/intangible/IntangibleObject.java b/src/resources/objects/intangible/IntangibleObject.java index fbf153b17..244ddd3ca 100644 --- a/src/resources/objects/intangible/IntangibleObject.java +++ b/src/resources/objects/intangible/IntangibleObject.java @@ -74,16 +74,4 @@ public class IntangibleObject extends SWGObject { public int hashCode() { return super.hashCode(); } - - protected void sendBaselines(Player target) { - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.ITNO, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - // Probably won't need to send this as it only contains server id. Game will not crash if you exclude this baseline (PLAY6 is only one who sends this atm) - bb = new BaselineBuilder(this, BaselineType.ITNO, 6); - createBaseline6(target, bb); - bb.sendTo(target); - } - } diff --git a/src/services/galaxy/ConnectionService.java b/src/services/galaxy/ConnectionService.java index a9a87020f..4588faf88 100644 --- a/src/services/galaxy/ConnectionService.java +++ b/src/services/galaxy/ConnectionService.java @@ -209,7 +209,6 @@ public class ConnectionService extends Service { if (p.getPlayerObject() != null) p.getPlayerObject().clearFlagBitmask(PlayerFlags.LD); p.setPlayerState(PlayerState.DISCONNECTED); - p.getPlayerObject().setOwner(null); p.getCreatureObject().setOwner(null); System.out.println("[" + p.getUsername() +"] " + p.getCharacterName() + " disappeared"); new PlayerEventIntent(p, PlayerEvent.PE_DISAPPEAR).broadcast(); diff --git a/src/services/player/ZoneService.java b/src/services/player/ZoneService.java index 900504243..2ec76f79b 100644 --- a/src/services/player/ZoneService.java +++ b/src/services/player/ZoneService.java @@ -176,7 +176,6 @@ public class ZoneService extends Service { player.setPlayerState(PlayerState.ZONING_IN); player.setCreatureObject(creature); creature.setOwner(player); - playerObj.setOwner(player); sendZonePackets(player, creature); initPlayerBeforeZoneIn(player, creature, playerObj);