Created
April 13, 2016 12:43
-
-
Save extendedclip/710a88fb088561e04777e5e57e06b35d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.extendedclip.papi.expansion.tokenmanager; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.UUID; | |
import java.util.concurrent.ConcurrentHashMap; | |
import me.clip.placeholderapi.PlaceholderAPI; | |
import me.clip.placeholderapi.expansion.Cacheable; | |
import me.clip.placeholderapi.expansion.Cleanable; | |
import me.clip.placeholderapi.expansion.Configurable; | |
import me.clip.placeholderapi.expansion.PlaceholderExpansion; | |
import me.clip.placeholderapi.expansion.Taskable; | |
import me.realized.tm.api.TMAPI; | |
import org.bukkit.Bukkit; | |
import org.bukkit.entity.Player; | |
import org.bukkit.scheduler.BukkitRunnable; | |
import org.bukkit.scheduler.BukkitTask; | |
public class TokenManagerExpansion extends PlaceholderExpansion implements Taskable, Cacheable, Cleanable, Configurable { | |
private final Map<UUID, Long> tokens = new ConcurrentHashMap<UUID, Long>(); | |
private BukkitTask task; | |
private int fetchInterval; | |
@Override | |
public boolean canRegister() { | |
return Bukkit.getPluginManager().getPlugin(getPlugin()) != null; | |
} | |
@Override | |
public boolean register() { | |
int interval = getInt("check_interval", 60); | |
if (interval > 0) { | |
fetchInterval = interval; | |
} else { | |
fetchInterval = 60; | |
} | |
return PlaceholderAPI.registerPlaceholderHook(getIdentifier(), this); | |
} | |
@Override | |
public String getAuthor() { | |
return "clip"; | |
} | |
@Override | |
public String getIdentifier() { | |
return "tokenmanager"; | |
} | |
@Override | |
public String getPlugin() { | |
return "TokenManager"; | |
} | |
@Override | |
public String getVersion() { | |
return "1.0.0"; | |
} | |
@Override | |
public Map<String, Object> getDefaults() { | |
final Map<String, Object> defaults = new HashMap<String, Object>(); | |
defaults.put("check_interval", 30); | |
return defaults; | |
} | |
@Override | |
public void start() { | |
task = new BukkitRunnable() { | |
@Override | |
public void run() { | |
if (tokens.isEmpty()) { | |
return; | |
} | |
for (UUID u : tokens.keySet()) { | |
tokens.put(u, TMAPI.getTokens(u)); | |
} | |
} | |
}.runTaskTimerAsynchronously(getPlaceholderAPI(), 100L, 20L*fetchInterval); | |
} | |
@Override | |
public void stop() { | |
if (task != null) { | |
try { | |
task.cancel(); | |
} catch(IllegalStateException ex) { | |
//uh oh | |
} | |
task = null; | |
} | |
} | |
@Override | |
public void cleanup(Player p) { | |
if (tokens.containsKey(p.getUniqueId())) { | |
tokens.remove(p.getUniqueId()); | |
} | |
} | |
@Override | |
public void clear() { | |
tokens.clear(); | |
} | |
@Override | |
public String onPlaceholderRequest(Player p, String identifier) { | |
if (p == null) { | |
return ""; | |
} | |
if (identifier.equals("tokens")) { | |
if (tokens.containsKey(p.getUniqueId())) { | |
return String.valueOf(tokens.get(p.getUniqueId())); | |
} | |
tokens.put(p.getUniqueId(), 0l); | |
return "0"; | |
} | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment