diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index 6abd4b73..e2e4d4f8 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -51,6 +51,12 @@
jitpack.io
https://jitpack.io
+
+
+
+ placeholderapi
+ http://repo.extendedclip.com/content/repositories/placeholderapi/
+
@@ -76,12 +82,26 @@
3.6.5
-
- com.github.ProtocolSupport
- ProtocolSupport
+
+ com.github.ProtocolSupport
+ ProtocolSupport
- a4f060dc46
-
+ a4f060dc46
+
+
+
+ me.clip
+ placeholderapi
+ 2.6.0
+ provided
+ true
+
+
+ *
+ *
+
+
+
@@ -110,10 +130,10 @@
-
- com.github.games647
- LogIt
- 9e3581db27
+
+ com.github.games647
+ LogIt
+ 9e3581db27
true
provided
@@ -122,7 +142,7 @@
*
-
+
com.github.RoyalDev
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java
index 1a6b650c..5f8ac26a 100644
--- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java
@@ -27,6 +27,8 @@ import java.util.concurrent.ThreadFactory;
import java.util.logging.Level;
import java.util.logging.Logger;
+import me.clip.placeholderapi.PlaceholderAPI;
+
import net.md_5.bungee.api.ChatColor;
import org.bukkit.command.CommandSender;
@@ -49,7 +51,7 @@ public class FastLoginBukkit extends JavaPlugin implements PlatformPlugin session = FastLoginCore.buildCache(1, -1);
+ private final ConcurrentMap loginSession = FastLoginCore.buildCache(1, -1);
@Override
public void onEnable() {
@@ -64,7 +66,7 @@ public class FastLoginBukkit extends JavaPlugin implements PlatformPlugin getSessions() {
- return session;
+ public ConcurrentMap getLoginSessions() {
+ return loginSession;
}
/**
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/PremiumPlaceholder.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/PremiumPlaceholder.java
new file mode 100644
index 00000000..81cc30b3
--- /dev/null
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/PremiumPlaceholder.java
@@ -0,0 +1,35 @@
+package com.github.games647.fastlogin.bukkit;
+
+import me.clip.placeholderapi.PlaceholderHook;
+
+import org.bukkit.entity.Player;
+import org.bukkit.metadata.MetadataValue;
+
+import java.util.List;
+
+public class PremiumPlaceholder extends PlaceholderHook {
+
+ private final FastLoginBukkit plugin;
+
+ public PremiumPlaceholder(FastLoginBukkit plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public String onPlaceholderRequest(Player player, String variable) {
+ if (player != null && "fastlogin_status".contains(variable)) {
+ List metadata = player.getMetadata(plugin.getName());
+ if (metadata == null) {
+ return "unknown";
+ }
+
+ if (metadata.size() > 0) {
+ return "premium";
+ } else {
+ return "cracked";
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java
index f6d1d004..93146be8 100644
--- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/BungeeCordListener.java
@@ -58,9 +58,6 @@ public class BungeeCordListener implements PluginMessageListener {
Player checkedPlayer = plugin.getServer().getPlayerExact(playerName);
//fail if target player is blacklisted because already authed or wrong bungeecord id
if (checkedPlayer != null && !checkedPlayer.hasMetadata(plugin.getName())) {
- //blacklist this target player for BungeeCord Id brute force attacks
- player.setMetadata(plugin.getName(), new FixedMetadataValue(plugin, true));
-
//bungeecord UUID
long mostSignificantBits = dataInput.readLong();
long leastSignificantBits = dataInput.readLong();
@@ -80,7 +77,7 @@ public class BungeeCordListener implements PluginMessageListener {
if ("AUTO_LOGIN".equalsIgnoreCase(subchannel)) {
BukkitLoginSession playerSession = new BukkitLoginSession(playerName, true);
playerSession.setVerified(true);
- plugin.getSessions().put(id, playerSession);
+ plugin.getLoginSessions().put(id, playerSession);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new ForceLoginTask(plugin.getCore(), player));
} else if ("AUTO_REGISTER".equalsIgnoreCase(subchannel)) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
@@ -90,7 +87,7 @@ public class BungeeCordListener implements PluginMessageListener {
if (authPlugin == null || !authPlugin.isRegistered(playerName)) {
BukkitLoginSession playerSession = new BukkitLoginSession(playerName, false);
playerSession.setVerified(true);
- plugin.getSessions().put(id, playerSession);
+ plugin.getLoginSessions().put(id, playerSession);
new ForceLoginTask(plugin.getCore(), player).run();
}
} catch (Exception ex) {
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/LoginSkinApplyListener.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/LoginSkinApplyListener.java
index 9c7f4c50..eb429239 100644
--- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/LoginSkinApplyListener.java
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/LoginSkinApplyListener.java
@@ -43,7 +43,7 @@ public class LoginSkinApplyListener implements Listener {
if (plugin.getConfig().getBoolean("forwardSkin")) {
//go through every session, because player.getAddress is null
//loginEvent.getAddress is just a InetAddress not InetSocketAddres, so not unique enough
- for (BukkitLoginSession session : plugin.getSessions().values()) {
+ for (BukkitLoginSession session : plugin.getLoginSessions().values()) {
if (session.getUsername().equals(player.getName())) {
String signature = session.getSkinSignature();
String skinData = session.getEncodedSkinData();
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/NameCheckTask.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/NameCheckTask.java
index 38e31ee9..57955439 100644
--- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/NameCheckTask.java
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/NameCheckTask.java
@@ -61,7 +61,7 @@ public class NameCheckTask extends JoinManagement premium player
if (propertiesResolveEvent.hasProperty("textures") && session != null) {
@@ -60,7 +60,7 @@ public class ProtocolSupportListener extends JoinManagement {
@@ -25,7 +26,11 @@ public class ForceLoginTask extends ForceLoginMangement