Issue with adding a new toolbelt.
Hello. I'm having an issue with the toolbelt. I've updated our toolbelt.java to include more items and adding support for a command to remove toolbelt items. However, when I try and log in it says error loading profile and gives me this error.
Code:
[SerializableFilesManager] Recovering account: sofakingh4rd
ERROR! THREAD NAME: New I/O server worker #1-1
java.io.InvalidClassException: com.rs.game.player.Toolbelt; local class incompatible: stream classdesc serialVersionUID = 8785635409322322662, local class serialVersionUID = -7244573478285647954
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2001)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2158)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1665)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2403)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2327)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2185)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1665)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:501)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:459)
at com.rs.utils.SerializableFilesManager.loadSerializedFile(SerializableFilesManager.java:168)
at com.rs.utils.SerializableFilesManager.loadPlayer(SerializableFilesManager.java:136)
at com.rs.net.decoders.LoginPacketsDecoder.decodeWorldLogin(LoginPacketsDecoder.java:179)
at com.rs.net.decoders.LoginPacketsDecoder.decode(LoginPacketsDecoder.java:43)
at com.rs.net.ServerChannelHandler.messageReceived(ServerChannelHandler.java:136)
at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:351)
at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Something to do with the class files? I've tried removing them to no avail. While creating a new account it works fine, just not on existing accounts. I really don't want to delete all player profiles to make this work! Any help in fixing this would be amazing.
The command I added is below. It removes all items from the toolbelt, which I thought was the issue, but sadly it looks like something to do with the player profiles ;(
owner.java
Code:
if (cmd[0].equalsIgnoreCase("resetbelt")) {
String username = cmd[1].substring(cmd[1].indexOf(" ") + 1);
Player other = World.getPlayerByDisplayName(username);
if (other == null) {
return true;
}
other.getToolbelt().reset();
player.getPackets().sendGameMessage("You have reset" + other.getDisplayName() + "Toolbelt.");
other.getPackets().sendGameMessage("Your Toolbelt has been reset by" + player.getDisplayName() + ".");
return true;
}
toolbelt.java
Code:
public void reset() {
toolbeltItems.clear();
toolbeltItems = new HashMap<Integer, Boolean>();
for (int items : TOOLBELT_ITEMS)
toolbeltItems.put(items, false);
// player.sm("Toolbelt items reset.");
Thank you so much!
EDIT
Before anyone asks, yes I have added this.
Code:
public class Toolbelt implements Serializable {
:hm: