Skip to content

Commit f8106b6

Browse files
committed
Fixed Debug messages, added player data load event, added mongo support.
1 parent 1992a81 commit f8106b6

13 files changed

Lines changed: 400 additions & 99 deletions

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
</properties>
1919

2020
<build>
21+
22+
<defaultGoal>clean package</defaultGoal>
2123
<plugins>
2224
<plugin>
2325
<groupId>org.apache.maven.plugins</groupId>
@@ -78,6 +80,11 @@
7880
<type>jar</type>
7981
<scope>compile</scope>
8082
</dependency>
83+
<dependency>
84+
<groupId>org.mongodb</groupId>
85+
<artifactId>mongodb-driver-sync</artifactId>
86+
<version>4.0.6</version>
87+
</dependency>
8188

8289
</dependencies>
8390
</project>

src/main/java/com/hiddentech/playerstorage/GetDataCommand.java

Lines changed: 65 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.hiddentech.playerstorage;
22

33
import com.hiddentech.playerstorage.types.PlayerData;
4+
import com.mongodb.client.model.Filters;
5+
import org.bson.Document;
46
import org.bukkit.Bukkit;
57
import org.bukkit.ChatColor;
68
import org.bukkit.command.Command;
@@ -15,20 +17,24 @@
1517

1618
public class GetDataCommand implements CommandExecutor {
1719
private PlayerStorage plugin;
18-
public GetDataCommand(PlayerStorage plugin){
20+
21+
public GetDataCommand(PlayerStorage plugin) {
1922
this.plugin = plugin;
2023
plugin.getCommand("playerdata").setExecutor(this);
2124
}
25+
2226
@Override
2327
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
24-
if(!sender.isOp()){
28+
if (!sender.isOp()) {
2529
sender.sendMessage("No perms");
26-
return true;}
27-
if(args.length<1){
30+
return true;
31+
}
32+
if (args.length < 1) {
2833
sender.sendMessage("specify player");
29-
return true;}
30-
sender.sendMessage("Retrieving data for "+args[0]);
31-
Player player =Bukkit.getPlayer(args[0]);
34+
return true;
35+
}
36+
sender.sendMessage("Retrieving data for " + args[0]);
37+
Player player = Bukkit.getPlayer(args[0]);
3238
if (player == null) {
3339
sender.sendMessage("They've never played!");
3440
return false;
@@ -37,37 +43,72 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3743
sender.sendMessage("Cached :");
3844
if (plugin.getRegistry().getPlayers().containsKey(player.getUniqueId())) {
3945
PlayerData data = plugin.getRegistry().getPlayers().get(player.getUniqueId());
40-
for (String key : data.getStrings().keySet()) {
41-
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getStrings().get(key));
42-
}
43-
for (String key : data.getBooleans().keySet()) {
44-
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getBooleans().get(key));
45-
}
46-
for (String key : data.getInts().keySet()) {
47-
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getInts().get(key));
46+
if (data.getBooleans().isEmpty() && data.getInts().isEmpty() && data.getStrings().isEmpty()) {
47+
sender.sendMessage("No data cached!");
48+
} else {
49+
for (String key : data.getStrings().keySet()) {
50+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getStrings().get(key));
51+
}
52+
for (String key : data.getBooleans().keySet()) {
53+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getBooleans().get(key));
54+
}
55+
for (String key : data.getInts().keySet()) {
56+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + data.getInts().get(key));
57+
}
4858
}
4959
} else {
5060
sender.sendMessage("No cached data found!");
5161
}
52-
sender.sendMessage("In cloud :");
5362
new BukkitRunnable() {
5463
@Override
5564
public void run() {
65+
66+
if (plugin.redisEnabled) {
67+
sender.sendMessage("In Redis :");
68+
try {
69+
if (!plugin.getRegistry().getPlayers().containsKey(player.getUniqueId())) {
70+
sender.sendMessage("No data found!");
71+
return;
72+
}
73+
Jedis jedis = plugin.getPool().getResource();
74+
if (!jedis.exists(player.getUniqueId().toString())) {
75+
sender.sendMessage("No data stored in redis!");
76+
} else {
77+
Map<String, String> strings = jedis.hgetAll(player.getUniqueId().toString());
78+
for (String key : strings.keySet()) {
79+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + strings.get(key));
80+
}
81+
}
82+
jedis.close();
83+
} catch (Exception e) {
84+
e.printStackTrace();
85+
}
86+
}
87+
if (!plugin.mongoEnabled) return;
88+
sender.sendMessage("In MongoDB :");
5689
try {
57-
if (!plugin.getRegistry().getPlayers().containsKey(player.getUniqueId())){
90+
if (!plugin.getRegistry().getPlayers().containsKey(player.getUniqueId())) {
5891
sender.sendMessage("No data found!");
5992
return;
6093
}
61-
Jedis jedis = plugin.getPool().getResource();
62-
if(!jedis.exists(player.getUniqueId().toString())){
63-
sender.sendMessage("No data stored in cloud!");
94+
Document document = plugin.getMongo().getCollection().find(Filters.eq("uuid", player.getUniqueId().toString())).first();
95+
if (document == null) {
96+
sender.sendMessage("No data stored in mongo!");
6497
return;
6598
}
66-
Map<String, String> strings = jedis.hgetAll(player.getUniqueId().toString());
67-
for(String key: strings.keySet()){
68-
sender.sendMessage(ChatColor.AQUA+""+key+ChatColor.DARK_BLUE+" : "+ChatColor.BLUE+strings.get(key));
99+
Map<String, String> storedStrings = (Map<String, String>) document.get("strings");
100+
Map<String, Boolean> storedBooleans = (Map<String, Boolean>) document.get("bools");
101+
Map<String, Integer> storedInts = (Map<String, Integer>) document.get("ints");
102+
103+
for (String key : storedStrings.keySet()) {
104+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + storedStrings.get(key));
105+
}
106+
for (String key : storedBooleans.keySet()) {
107+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + storedBooleans.get(key));
108+
}
109+
for (String key : storedInts.keySet()) {
110+
sender.sendMessage(ChatColor.AQUA + "" + key + ChatColor.DARK_BLUE + " : " + ChatColor.BLUE + storedInts.get(key));
69111
}
70-
jedis.close();
71112
} catch (Exception e) {
72113
e.printStackTrace();
73114
}

src/main/java/com/hiddentech/playerstorage/LoginConfig.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ private void setConfig() {
1414
plugin.getDataFolder().mkdirs();
1515
}
1616
//add config for connection
17-
if(!plugin.getConfig().isSet("Connection")){
18-
plugin.getConfig().set("Connection", "change this!");
17+
if(!plugin.getConfig().isSet("Redis_Connection")){
18+
plugin.getConfig().set("Redis_Connection", "change this!");
1919
//redis-14639.c266.us-east-1-3.ec2.cloud.redislabs.com:14639
20-
plugin.getConfig().set("Port", 12345);
21-
plugin.getConfig().set("Password", "and this too!");
20+
plugin.getConfig().set("Redis_Port", 12345);
21+
plugin.getConfig().set("Redis_Password", "and this too!");
22+
plugin.getConfig().set("Redis_Data_Expire_After", 86400);
2223
//rbZX3oKRmEroQ7XOWRtUb25cCMRtM2Fr
23-
plugin.saveConfig();
2424
}
25+
if(!plugin.getConfig().isSet("Storage_Configuration")){
26+
plugin.getConfig().set("Storage_Configuration","both");
27+
plugin.getConfig().set("Mongo_DB_Name","PlayerStorageAPI");
28+
plugin.getConfig().set("Mongo_DB_ConnectionString","Change Me Too!");
29+
}
30+
plugin.saveConfig();
2531
}
2632
}
Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,39 @@
1-
package com.hiddentech.playerstorage;public class Mongo {
1+
package com.hiddentech.playerstorage;
2+
3+
import com.mongodb.client.MongoClient;
4+
import com.mongodb.client.MongoClients;
5+
import com.mongodb.client.MongoCollection;
6+
import com.mongodb.client.MongoDatabase;
7+
import org.bson.Document;
8+
9+
public class Mongo {
10+
private final String connectionString;
11+
private final String databaseString;
12+
private final String collectionString;
13+
14+
public MongoClient getClient() {
15+
return client;
16+
}
17+
18+
public MongoDatabase getDatabase() {
19+
return database;
20+
}
21+
22+
public MongoCollection<Document> getCollection() {
23+
return collection;
24+
}
25+
26+
private MongoClient client;
27+
private MongoDatabase database;
28+
private MongoCollection<Document> collection;
29+
public Mongo(String connection,String database,String collection) {
30+
this.connectionString = connection;
31+
this.databaseString = database;
32+
this.collectionString = collection;
33+
}
34+
public void connect() {
35+
client = MongoClients.create(connectionString);
36+
database = client.getDatabase(databaseString);
37+
collection = database.getCollection(collectionString);
38+
}
239
}
Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,49 @@
11
package com.hiddentech.playerstorage;
22

3+
import com.hiddentech.playerstorage.types.PlayerData;
34
import com.mongodb.client.model.Filters;
45
import com.mongodb.client.model.ReplaceOptions;
56
import org.bson.Document;
67
import org.bukkit.Bukkit;
78
import org.bukkit.scheduler.BukkitRunnable;
89

910
import java.util.ArrayList;
11+
import java.util.Map;
1012
import java.util.UUID;
1113

12-
public class PlayerData extends Document {
14+
public class MongoPlayerData extends Document {
1315

1416
private final Mongo mongo;
1517
private final String uuid;
1618
private final Document document = this;
17-
public PlayerData(UUID uuid, Mongo mongo) {
18-
this.mongo = mongo;
19-
this.uuid = uuid.toString();
20-
put("uuid", uuid.toString());
21-
put("data", new ArrayList<String>());
22-
put("ouch", "yesysh");
19+
private final PlayerStorage plugin;
20+
private final PlayerData data;
2321

24-
Bukkit.broadcastMessage("saving");
25-
save();
22+
public MongoPlayerData(UUID uuid, PlayerData data, Mongo mongo, PlayerStorage plugin) {
23+
this(uuid.toString(),data,mongo,plugin);
2624
}
27-
public PlayerData(String uuid, Mongo mongo) {
25+
public MongoPlayerData(String uuid,PlayerData data, Mongo mongo,PlayerStorage plugin) {
2826
this.mongo = mongo;
2927
this.uuid = uuid;
30-
put("uuid", uuid.toString());
31-
put("data", new ArrayList<String>());
32-
put("ouch", "yesysh");
33-
34-
Bukkit.broadcastMessage("saving");
35-
save();
28+
this.plugin = plugin;
29+
put("uuid", uuid);
30+
put("bools", data.getBooleans());
31+
put("ints",data.getInts());
32+
put("strings",data.getStrings());
33+
this.data=data;
3634
}
3735

3836
public void save() {
3937
new BukkitRunnable() {
4038
@Override
4139
public void run() {
42-
mongo.getCollection().replaceOne(Filters.eq("uuid", uuid.toString()), document, new ReplaceOptions().upsert(true));
43-
Bukkit.broadcastMessage(" yes"+ document);
40+
//delete if no data is unique
41+
if(data.getBooleans().isEmpty()&&data.getInts().isEmpty()&&data.getStrings().isEmpty()){
42+
mongo.getCollection().deleteOne(Filters.eq("uuid", uuid));
43+
return;
44+
}
45+
mongo.getCollection().replaceOne(Filters.eq("uuid", uuid), document, new ReplaceOptions().upsert(true));
4446
}
45-
};
47+
}.runTaskAsynchronously(plugin);
4648
}
4749
}

0 commit comments

Comments
 (0)