bascially am trying to convert the worker thread from rs2hd to work with shard based source but I am having problems when it comes to loading it saves fine, JUST DOESNT LOAD!@!@!@ any help please?
Code:
package com.rs2;
import java.util.LinkedList;
import java.util.Queue;
import com.rs2.model.player.Player;
import com.rs2.model.player.PlayerDetails;
import com.rs2.model.player.PlayerLoader;
import com.rs2.util.Misc;
public class WorkerThread implements Runnable {
private PlayerLoader loader;
private Queue<PlayerDetails> playersToLoad;
private Queue<Player> playersToSave;
public WorkerThread(PlayerLoader loader) {
this.loader = loader;
this.playersToLoad = new LinkedList<PlayerDetails>();
this.playersToSave = new LinkedList<Player>();
System.out.println("Worker thread started.");
}
public void run() {
while (true) {
synchronized (this) {
try {
wait();
} catch (InterruptedException e) {
cleanup();
break;
}
}
synchronized (playersToLoad) {
if (!playersToLoad.isEmpty()) {
@SuppressWarnings("unused")
PlayerDetails d = null;
while ((d = playersToLoad.poll()) != null) {
}
playersToLoad.clear();
}
}
synchronized (playersToSave) {
if (!playersToSave.isEmpty()) {
Player p = null;
while ((p = playersToSave.poll()) != null) {
if(loader.saveGame(p)) {
Misc.debug("Saved gamed for " + p.getUsername() +" .");
} else {
Misc.debug("Error saving game for " + p.getUsername() +" .");
}
}
playersToSave.clear();
}
}
}
}
private void cleanup() {
}
public void loadPlayer(PlayerDetails d) {
synchronized (playersToLoad) {
playersToLoad.add(d);
}
synchronized (this) {
notifyAll();
}
}
public void savePlayer(Player p) {
synchronized (playersToSave) {
playersToSave.add(p);
}
synchronized (this) {
notifyAll();
}
}
}
Code:
package com.rs2.model.player;
/**
* The save object
*
* @author Ultimate
*
*/
import java.io.Serializable;
public class PlayerDetails implements Serializable {
private String username;
private String password;
private int absX;
private int absY;
private int heightLevel;
private boolean appearanceSet;
private int[] playerItem;
private int[] playerItemN;
private int[] playerEquipment;
private int[] playerEquipmentN;
private int[] playerLevel;
private int[] playerXP;
private int hitpoints;
private int[] bankItems;
private int[] bankItemsN;
private int playerBankSize;
private int[] playerLook;
private long[] friends;
private int friendsSize;
private long[] ignores;
private int ignoresSize;
private int specialAmount;
private int poisonDelay;
private int skullTimer;
private int pkPoints;
private int energy;
private boolean ancients;
private boolean playerIsMember;
public PlayerDetails(Player p) {
username = p.getUsername();
password = p.getPassword();
absX = p.getAbsX();
absY = p.getAbsY();
heightLevel = p.getHeightLevel();
appearanceSet = p.appearanceSet;
playerItem = p.playerItems;
playerItemN = p.playerItemsN;
playerEquipment = p.playerEquipment;
playerEquipmentN = p.playerEquipmentN;
playerLevel = p.playerLevel;
playerXP = p.playerXP;
hitpoints = p.hitpoints;
bankItems = p.bankItems;
bankItemsN = p.bankItemsN;
playerLook = p.playerLook;
playerBankSize = p.getPlayerBankSize();
if (p.getFriends() != null) {
friends = p.getFriends();
} else {
friends = new long[200];
}
friendsSize = p.getFriendsSize();
if (p.getIgnores() != null) {
ignores = p.getIgnores();
} else {
ignores = new long[100];
}
ignoresSize = p.getIgnoresSize();
specialAmount = p.getSpecialAmount();
poisonDelay = p.getPoisonDelay();
skullTimer = p.getSkullTimer();
pkPoints = p.getPkPoints();
energy = p.getEnergy();
ancients = p.isUsingAncients();
playerIsMember = p.isPlayerMember();
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @return the absX
*/
public int getAbsX() {
return absX;
}
/**
* @return the absY
*/
public int getAbsY() {
return absY;
}
/**
* @return the heightLevel
*/
public int getHeightlevel() {
return heightLevel;
}
/**
* @return the lastLogin
*/
public boolean isAppearanceSet() {
return appearanceSet;
}
/**
* @return the playerItem
*/
public int[] getPlayerItem() {
return playerItem;
}
/**
* @return the playerItemN to be set
*/
public int[] getPlayerItemN() {
return playerItemN;
}
/**
* @return the playerEquipment
*/
public int[] getPlayerEquipment() {
return playerEquipment;
}
/**
* @return the playerLevel
*/
public int[] getPlayerLevel() {
return playerLevel;
}
/**
* @return the playerXP
*/
public int[] getPlayerXP() {
return playerXP;
}
/**
* @return the hitpoints
*/
public int getHitpoints() {
return hitpoints;
}
/**
* @return the playerEquipmentN
*/
public int[] getPlayerEquipmentN() {
return playerEquipmentN;
}
/**
* @return the player's look
*/
public int[] getPlayerLook() {
return playerLook;
}
/**
* @return the bankItems
*/
public int[] getBankItems() {
return bankItems;
}
/**
* @return the bankItemsN
*/
public int[] getBankItemsN() {
return bankItemsN;
}
/**
* @return the player's bank size
*/
public int getPlayerBankSize() {
return playerBankSize;
}
/**
* @return the friends
*/
public long[] getFriends() {
return friends;
}
/**
* @return the friendsSize
*/
public int getFriendsSize() {
return friendsSize;
}
/**
* @return the ignores
*/
public long[] getIgnores() {
return ignores;
}
/**
* @return the ignoresSize
*/
public int getIgnoresSize() {
return ignoresSize;
}
/**
* @return the specialAmount
*/
public int getSpecialAmount() {
return specialAmount;
}
/**
* @return the poisonDelay
*/
public int getPosionDelay() {
return poisonDelay;
}
/**
* @return the skull timer
*/
public int getSkullTimer() {
return skullTimer;
}
/**
* @return the pk points
*/
public int getPkPoints() {
return pkPoints;
}
/**
* @return the energy
*/
public int getEnergy() {
return energy;
}
/**
* @return ancients
*/
public boolean isUsingAncients() {
return ancients;
}
/**
* @return playerIsMember
*/
public boolean isPlayerMember() {
return playerIsMember;
}
private static final long serialVersionUID = 1L;
}
Code:
package com.rs2.model.player;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class PlayerLoader {
public PlayerDetails loadGame(String username) {
PlayerDetails load;
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("./data/characters/" + username + ".dat"));
load = (PlayerDetails) in.readObject();
in.close();
} catch (Exception e) {
return null;
}
return load;
}
public boolean saveGame(Player p) {
PlayerDetails playerDetails = new PlayerDetails(p);
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("./data/characters/"
+ playerDetails.getUsername() + ".dat"));
out.writeObject(playerDetails);
out.close();
} catch (Exception e) {
System.out.println(e);
return false;
}
return true;
}
}
thanks