Skip to content

Commit d013f04

Browse files
committed
1.6.10: Use separate UserManager to not clear user pack map on reload
1 parent 21ad3af commit d013f04

File tree

10 files changed

+92
-22
lines changed

10 files changed

+92
-22
lines changed

bukkit/src/main/java/de/themoep/resourcepacksplugin/bukkit/WorldResourcepacks.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import de.themoep.resourcepacksplugin.core.ResourcePack;
1313
import de.themoep.resourcepacksplugin.core.ResourcepacksPlayer;
1414
import de.themoep.resourcepacksplugin.core.ResourcepacksPlugin;
15+
import de.themoep.resourcepacksplugin.core.UserManager;
1516
import de.themoep.resourcepacksplugin.core.events.IResourcePackSelectEvent;
1617
import de.themoep.resourcepacksplugin.core.events.IResourcePackSendEvent;
1718
import fr.xephi.authme.api.NewAPI;
@@ -38,6 +39,8 @@ public class WorldResourcepacks extends JavaPlugin implements ResourcepacksPlugi
3839

3940
private PackManager pm;
4041

42+
private UserManager um;
43+
4144
private Level loglevel = Level.INFO;
4245

4346
private int serverPackFormat = Integer.MAX_VALUE;
@@ -103,6 +106,8 @@ public void onEnable() {
103106
getPackManager().generateHashes(null);
104107
}
105108

109+
um = new UserManager(this);
110+
106111
try {
107112
MetricsLite metrics = new MetricsLite(this);
108113
metrics.start();
@@ -325,13 +330,17 @@ public void clearPack(UUID playerId) {
325330
}
326331

327332
public void clearPack(Player player) {
328-
getPackManager().clearUserPack(player.getUniqueId());
333+
getUserManager().clearUserPack(player.getUniqueId());
329334
}
330335

331336
public PackManager getPackManager() {
332337
return pm;
333338
}
334339

340+
public UserManager getUserManager() {
341+
return um;
342+
}
343+
335344
public String getMessage(String key) {
336345
String msg = getConfig().getString("messages." + key);
337346
if(msg == null || msg.isEmpty()) {

bukkit/src/main/java/de/themoep/resourcepacksplugin/bukkit/listeners/ProxyPackListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void onPluginMessageReceived(String channel, Player p, byte[] message) {
5454
}
5555

5656
plugin.getLogger().log(plugin.getLogLevel(), "BungeeCord proxy send pack " + pack.getName() + " (" + pack.getUrl() + ") to player " + player.getName());
57-
plugin.getPackManager().setUserPack(player.getUniqueId(), pack);
57+
plugin.getUserManager().setUserPack(player.getUniqueId(), pack);
5858
} else if(subchannel.equals("clearPack")) {
5959
String playerName = in.readUTF();
6060
Player player = plugin.getServer().getPlayer(playerName);

bungee/src/main/java/de/themoep/resourcepacksplugin/bungee/BungeeResourcepacks.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import de.themoep.resourcepacksplugin.core.ResourcePack;
1313
import de.themoep.resourcepacksplugin.core.ResourcepacksPlayer;
1414
import de.themoep.resourcepacksplugin.core.ResourcepacksPlugin;
15+
import de.themoep.resourcepacksplugin.core.UserManager;
1516
import de.themoep.resourcepacksplugin.core.events.IResourcePackSelectEvent;
1617
import de.themoep.resourcepacksplugin.core.events.IResourcePackSendEvent;
1718
import net.md_5.bungee.api.ChatColor;
@@ -49,6 +50,8 @@ public class BungeeResourcepacks extends Plugin implements ResourcepacksPlugin {
4950
private YamlConfig config;
5051

5152
private PackManager pm;
53+
54+
private UserManager um;
5255

5356
private Level loglevel = Level.INFO;
5457

@@ -124,6 +127,8 @@ public void onEnable() {
124127
getPackManager().generateHashes(null);
125128
}
126129

130+
um = new UserManager(this);
131+
127132
getProxy().getPluginManager().registerListener(this, new DisconnectListener(this));
128133
getProxy().getPluginManager().registerListener(this, new ServerSwitchListener(this));
129134
getProxy().getPluginManager().registerListener(this, new PluginMessageListener(this));
@@ -408,13 +413,17 @@ public void clearPack(ProxiedPlayer player) {
408413
}
409414

410415
public void clearPack(UUID playerId) {
411-
getPackManager().clearUserPack(playerId);
416+
getUserManager().clearUserPack(playerId);
412417
}
413418

414419
public PackManager getPackManager() {
415420
return pm;
416421
}
417422

423+
public UserManager getUserManager() {
424+
return um;
425+
}
426+
418427
/**
419428
* Add a player's UUID to the list of players with a backend pack
420429
* @param playerId The uuid of the player

bungee/src/main/java/de/themoep/resourcepacksplugin/bungee/listeners/ServerSwitchListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void onServerSwitch(ServerSwitchEvent event) {
2727
final UUID playerId = event.getPlayer().getUniqueId();
2828
plugin.unsetBackend(playerId);
2929

30-
ResourcePack pack = plugin.getPackManager().getUserPack(playerId);
30+
ResourcePack pack = plugin.getUserManager().getUserPack(playerId);
3131
plugin.sendPackInfo(event.getPlayer(), pack);
3232

3333
plugin.getProxy().getScheduler().schedule(plugin, new Runnable() {

bungee/src/main/java/de/themoep/resourcepacksplugin/bungee/packets/ResourcePackSendPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void relayPacket(UserConnection usercon, PacketWrapper packet) throws Exc
7777
}
7878
plugin.setBackend(usercon.getUniqueId());
7979
plugin.getLogger().log(BungeeResourcepacks.getInstance().getLogLevel(), "Backend mc server send pack " + pack.getName() + " (" + pack.getUrl() + ") to player " + usercon.getName());
80-
plugin.getPackManager().setUserPack(usercon.getUniqueId(), pack);
80+
plugin.getUserManager().setUserPack(usercon.getUniqueId(), pack);
8181
}
8282
usercon.getPendingConnection().handle(packet);
8383
}

core/src/main/java/de/themoep/resourcepacksplugin/core/PackManager.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@ public class PackManager {
4343
*/
4444
private Map<String, String> urlmap = new HashMap<String, String>();
4545

46-
/**
47-
* playerid -> packname
48-
*/
49-
private Map<UUID, String> usermap = new ConcurrentHashMap<UUID, String>();
50-
5146
/**
5247
* Name of the empty pack, null if none is set
5348
*/
@@ -240,31 +235,34 @@ public ResourcePack getServerPack(String server) {
240235
* Get the resourcepack of a user
241236
* @param playerid The UUID of this player
242237
* @return The resourcepack the player has selected, null if he has none/isn't known
238+
* @deprecated Use {@link UserManager#getUserPack} instead!
243239
*/
240+
@Deprecated
244241
public ResourcePack getUserPack(UUID playerid) {
245-
String name = usermap.get(playerid);
246-
return (name == null) ? null : getByName(name);
242+
return plugin.getUserManager().getUserPack(playerid);
247243
}
248244

249245
/**
250246
* Set the resourcepack of a user
251247
* @param playerid The UUID of this player
252248
* @param pack The resourcepack of the user
253249
* @return The resourcepack the player had selected previous, null if he had none before
250+
* @deprecated Use {@link UserManager#setUserPack} instead!
254251
*/
252+
@Deprecated
255253
public ResourcePack setUserPack(UUID playerid, ResourcePack pack) {
256-
String previous = usermap.put(playerid, pack.getName());
257-
return (previous == null) ? null : getByName(previous);
254+
return plugin.getUserManager().setUserPack(playerid, pack);
258255
}
259256

260257
/**
261258
* Clear the resourcepack of a user
262259
* @param playerid The UUID of this player
263260
* @return The resourcepack the player had selected previous, null if he had none before
261+
* @deprecated Use {@link UserManager#clearUserPack} instead!
264262
*/
263+
@Deprecated
265264
public ResourcePack clearUserPack(UUID playerid) {
266-
String previous = usermap.remove(playerid);
267-
return (previous == null) ? null : getByName(previous);
265+
return plugin.getUserManager().clearUserPack(playerid);
268266
}
269267

270268

@@ -353,7 +351,7 @@ public List<String> getServerSecondary(String server) {
353351
* @param pack The ResourcePack to set, if it is null it will reset to empty if the player has a pack applied
354352
*/
355353
public void setPack(UUID playerId, ResourcePack pack) {
356-
ResourcePack prev = getUserPack(playerId);
354+
ResourcePack prev = plugin.getUserManager().getUserPack(playerId);
357355
if (pack != null && pack.equals(prev)) {
358356
return;
359357
}
@@ -367,7 +365,7 @@ public void setPack(UUID playerId, ResourcePack pack) {
367365
pack = getEmptyPack();
368366
}
369367
if (pack != null && !pack.equals(prev)) {
370-
setUserPack(playerId, pack);
368+
plugin.getUserManager().setUserPack(playerId, pack);
371369
plugin.sendPack(playerId, pack);
372370
}
373371
}
@@ -384,7 +382,7 @@ public void applyPack(UUID playerId, String serverName) {
384382
* @return The pack for that server; <tt>null</tt> if he should have none
385383
*/
386384
public ResourcePack getApplicablePack(UUID playerId, String serverName) {
387-
ResourcePack prev = getUserPack(playerId);
385+
ResourcePack prev = plugin.getUserManager().getUserPack(playerId);
388386
ResourcePack pack = null;
389387
IResourcePackSelectEvent.Status status = IResourcePackSelectEvent.Status.UNKNOWN;
390388
if(isGlobalSecondary(prev) && checkPack(playerId, prev, IResourcePackSelectEvent.Status.SUCCESS) == IResourcePackSelectEvent.Status.SUCCESS) {

core/src/main/java/de/themoep/resourcepacksplugin/core/ResourcepacksPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public interface ResourcepacksPlugin {
5656

5757
PackManager getPackManager();
5858

59+
UserManager getUserManager();
60+
5961
/**
6062
* Get a message from the config
6163
* @param key The message's key
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package de.themoep.resourcepacksplugin.core;
2+
3+
import java.util.Map;
4+
import java.util.UUID;
5+
import java.util.concurrent.ConcurrentHashMap;
6+
7+
/**
8+
* Created by Phoenix616 on 04.11.2016.
9+
*/
10+
public class UserManager {
11+
private final ResourcepacksPlugin plugin;
12+
13+
/**
14+
* playerid -> packname
15+
*/
16+
private final Map<UUID, String> userPackMap = new ConcurrentHashMap<>();
17+
18+
public UserManager(ResourcepacksPlugin plugin) {
19+
this.plugin = plugin;
20+
}
21+
22+
/**
23+
* Get the resourcepack of a user
24+
* @param playerid The UUID of this player
25+
* @return The resourcepack the player has selected, null if he has none/isn't known
26+
*/
27+
public ResourcePack getUserPack(UUID playerid) {
28+
String name = userPackMap.get(playerid);
29+
return (name == null) ? null : plugin.getPackManager().getByName(name);
30+
}
31+
32+
/**
33+
* Set the resourcepack of a user
34+
* @param playerid The UUID of this player
35+
* @param pack The resourcepack of the user
36+
* @return The resourcepack the player had selected previous, null if he had none before
37+
*/
38+
public ResourcePack setUserPack(UUID playerid, ResourcePack pack) {
39+
String previous = userPackMap.put(playerid, pack.getName());
40+
return (previous == null) ? null : plugin.getPackManager().getByName(previous);
41+
}
42+
43+
/**
44+
* Clear the resourcepack of a user
45+
* @param playerid The UUID of this player
46+
* @return The resourcepack the player had selected previous, null if he had none before
47+
*/
48+
public ResourcePack clearUserPack(UUID playerid) {
49+
String previous = userPackMap.remove(playerid);
50+
return (previous == null) ? null : plugin.getPackManager().getByName(previous);
51+
}
52+
}

core/src/main/java/de/themoep/resourcepacksplugin/core/commands/UsePackCommandExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public boolean execute(ResourcepacksPlayer sender, String[] args) {
3737
plugin.getLogger().warning("You have to specify a player if you want to run this command from the console! /usepack <packname> <playername>");
3838
return true;
3939
}
40-
ResourcePack prev = plugin.getPackManager().getUserPack(player.getUniqueId());
40+
ResourcePack prev = plugin.getUserManager().getUserPack(player.getUniqueId());
4141
if (!pack.equals(prev)) {
4242
plugin.getPackManager().setPack(player.getUniqueId(), pack);
4343
if (!player.equals(sender)) {
@@ -59,7 +59,7 @@ public boolean execute(ResourcepacksPlayer sender, String[] args) {
5959
plugin.sendMessage(sender, ChatColor.GREEN + plugin.getMessage("packlisthead"));
6060
List<ResourcePack> packs = plugin.getPackManager().getPacks();
6161
if(packs.size() > 0) {
62-
ResourcePack userPack = plugin.getPackManager().getUserPack(sender.getUniqueId());
62+
ResourcePack userPack = plugin.getUserManager().getUserPack(sender.getUniqueId());
6363
List<ResourcePack> applicablePacks = new ArrayList<ResourcePack>();
6464
for(ResourcePack pack : packs) {
6565
if(pack.getFormat() <= plugin.getPlayerPackFormat(sender.getUniqueId()) && plugin.checkPermission(sender, pack.getPermission())) {

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
</modules>
2222

2323
<properties>
24-
<plugin.version>1.6.9-SNAPSHOT</plugin.version>
24+
<plugin.version>1.6.10-SNAPSHOT</plugin.version>
2525
</properties>
2626

2727
<repositories>

0 commit comments

Comments
 (0)