diff --git a/src/buttondevteam/core/TBMCPlayer.java b/src/buttondevteam/core/TBMCPlayer.java
index dd0cc47..db3ee4e 100644
--- a/src/buttondevteam/core/TBMCPlayer.java
+++ b/src/buttondevteam/core/TBMCPlayer.java
@@ -6,6 +6,7 @@ import java.util.HashMap;
import java.util.UUID;
import org.bukkit.Bukkit;
+import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
@@ -17,8 +18,7 @@ import com.palmergames.bukkit.towny.object.TownyUniverse;
* The class for holding data common to all TBMC plugins
*
*
- * Listen to the load and save events from this package to load and save
- * plugin-specific data
+ * Listen to the load and save events from this package to load and save plugin-specific data
*
*
* @author Norbi
@@ -31,6 +31,18 @@ public class TBMCPlayer {
public UUID UUID;
+ public T AsPluginPlayer(Class cl) {
+ T obj = null;
+ try {
+ obj = cl.newInstance();
+ obj.UUID = UUID;
+ obj.PlayerName = PlayerName;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return obj;
+ }
+
public static HashMap OnlinePlayers = new HashMap<>();
/**
@@ -40,9 +52,9 @@ public class TBMCPlayer {
*/
public static TBMCPlayer GetFromName(String name) {
@SuppressWarnings("deprecation")
- Player p = Bukkit.getPlayer(name);
+ OfflinePlayer p = Bukkit.getOfflinePlayer(name);
if (p != null)
- return GetPlayer(p); // TODO: Put playernames into filenames
+ return GetPlayer(p);
else
return null;
}
@@ -52,11 +64,14 @@ public class TBMCPlayer {
* The Player object
* @return The {@link TBMCPlayer} object for the player
*/
- public static TBMCPlayer GetPlayer(Player p) {
- return TBMCPlayer.OnlinePlayers.get(p.getUniqueId());
+ public static TBMCPlayer GetPlayer(OfflinePlayer p) {
+ if (TBMCPlayer.OnlinePlayers.containsKey(p.getUniqueId()))
+ return TBMCPlayer.OnlinePlayers.get(p.getUniqueId());
+ else
+ return TBMCPlayer.LoadPlayer(p);
}
- static TBMCPlayer LoadPlayer(Player p) {
+ protected static TBMCPlayer LoadPlayer(OfflinePlayer p) {
if (OnlinePlayers.containsKey(p.getUniqueId()))
return OnlinePlayers.get(p.getUniqueId());
File file = new File(TBMC_PLAYERS_DIR);
@@ -75,6 +90,7 @@ public class TBMCPlayer {
TBMCPlayer player = new TBMCPlayer();
player.UUID = p.getUniqueId();
player.PlayerName = yc.getString("playername");
+ System.out.println("Player name: " + player.PlayerName);
if (!p.getName().equals(player.PlayerName)) {
System.out.println("Renaming " + player.PlayerName + " to " + p.getName());
TownyUniverse tu = Towny.getPlugin(Towny.class).getTownyUniverse();
@@ -88,7 +104,7 @@ public class TBMCPlayer {
}
}
- static TBMCPlayer AddPlayer(Player p) {
+ static TBMCPlayer AddPlayer(OfflinePlayer p) {
TBMCPlayer player = new TBMCPlayer();
player.UUID = p.getUniqueId();
player.PlayerName = p.getName();
@@ -108,4 +124,18 @@ public class TBMCPlayer {
new Exception("Failed to save player data for " + player.PlayerName, e).printStackTrace();
}
}
+
+ static void JoinPlayer(TBMCPlayer player) {
+ OnlinePlayers.put(player.UUID, player);
+ Bukkit.getServer().getPluginManager().callEvent(new TBMCPlayerJoinEvent(player));
+ }
+
+ static void QuitPlayer(TBMCPlayer player) {
+ OnlinePlayers.remove(player.UUID);
+ Bukkit.getServer().getPluginManager().callEvent(new TBMCPlayerQuitEvent(player));
+ }
+
+ T GetAs(Class cl) { // TODO: Serialize player classes
+ return null;
+ }
}
diff --git a/src/buttondevteam/core/TBMCPlayerJoinEvent.java b/src/buttondevteam/core/TBMCPlayerJoinEvent.java
new file mode 100644
index 0000000..1427bb4
--- /dev/null
+++ b/src/buttondevteam/core/TBMCPlayerJoinEvent.java
@@ -0,0 +1,27 @@
+package buttondevteam.core;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+
+public class TBMCPlayerJoinEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private TBMCPlayer player;
+
+ public TBMCPlayerJoinEvent(TBMCPlayer player) {
+ this.player = player;
+ }
+
+ public TBMCPlayer GetPlayer() {
+ return player;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}
diff --git a/src/buttondevteam/core/TBMCPlayerQuitEvent.java b/src/buttondevteam/core/TBMCPlayerQuitEvent.java
new file mode 100644
index 0000000..4b4bab8
--- /dev/null
+++ b/src/buttondevteam/core/TBMCPlayerQuitEvent.java
@@ -0,0 +1,27 @@
+package buttondevteam.core;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+
+public class TBMCPlayerQuitEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private TBMCPlayer player;
+
+ public TBMCPlayerQuitEvent(TBMCPlayer player) {
+ this.player = player;
+ }
+
+ public TBMCPlayer GetPlayer() {
+ return player;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}