That is how I have my Packet infrastructure set up, not really the bug though.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Packet {
public static class Packet1 {
}
public static class Packet2 {
} } |
and I register via
1 2 3
| Kryo Serializer = client.getKryo(); Serializer.register(Packet.Packet1.class); Serializer.register(Packet.Packet2.class); |
My issue comes about from code inside one of my packets. I have an object, Player, which has always been able to exist as a local variable of Packet1 (lets say)
1 2 3 4 5 6 7 8 9
| public class Packet {
public static class Packet1 {
Player p = new Player();
} |
Recently I have added another object, which exists in Player
1 2 3 4 5 6
| public class Player() {
Spell s = new Spell();
} |
Inside Spell:
1 2 3 4 5 6 7 8
| public class Spell implements DrawableObject {
public Animation animation = null; public SpriteSheet sprite_sheet = null;
} |
Here is the full trace:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Exception in thread "Client" com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 7709 Serialization trace: animation (spells.Spell) MySpells (client_framework.Player) p1 (client_framework.Team) Team1 (client_framework.GameLobby) G (client_framework.Packet$Packet2PlayerInit) at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:623) at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:747) at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:340) at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:293) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:671) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:224) at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:760) at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:340) at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:293) at com.esotericsoftware.kryo.Kryo.readObjectOrNull(Kryo.java:732) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:229) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:671) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:224) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:671) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:224) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:671) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:224) at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:760) at com.esotericsoftware.kryonet.KryoSerialization.read(KryoSerialization.java:57) at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:137) at com.esotericsoftware.kryonet.Client.update(Client.java:239) at com.esotericsoftware.kryonet.Client.run(Client.java:317) at java.lang.Thread.run(Unknown Source) |
The compiler gets hung up at the variable 'animation' located in Spell.java due to it being incorrectly registered (or something along those lines).
I thought what agentd said,
yet for whatever reason I don't know how to find the accurate path in registering Animation.FrameThis is not recognized:
1
| Serializer.register(org.newdawn.slick.Animation.Frame.class); |
Thank you for your time.