diff --git a/README.md b/README.md
index fdb5a8f7..2da50d3a 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,7 @@ So they don't need to enter passwords. This is also called auto login (auto-logi
* [CrazyLogin](http://dev.bukkit.org/bukkit-plugins/crazylogin/)
* [LoginSecurity](http://dev.bukkit.org/bukkit-plugins/loginsecurity/)
* [RoyalAuth](http://dev.bukkit.org/bukkit-plugins/royalauth/)
+ * [UltraAuth](http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/)
###Downloads
diff --git a/bukkit/lib/UltraAuth v2.0.2.jar b/bukkit/lib/UltraAuth v2.0.2.jar
new file mode 100644
index 00000000..203aaeff
Binary files /dev/null and b/bukkit/lib/UltraAuth v2.0.2.jar differ
diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index 5d874072..16564223 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -5,7 +5,7 @@
com.github.games647
fastlogin-parent
- 0.5
+ 0.6
../pom.xml
@@ -52,7 +52,7 @@
org.spigotmc
spigot-api
- 1.8.8-R0.1-SNAPSHOT
+ 1.9-R0.1-SNAPSHOT
provided
@@ -128,5 +128,14 @@
system
${project.basedir}/lib/CrazyLogin v7.23.2.jar
+
+
+ ultraauth
+ ultraauth
+ 2.0.2
+ true
+ system
+ ${project.basedir}/lib/UltraAuth v2.0.2.jar
+
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java
new file mode 100644
index 00000000..a9bdcad6
--- /dev/null
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java
@@ -0,0 +1,58 @@
+package com.github.games647.fastlogin.bukkit.hooks;
+
+import java.lang.reflect.Method;
+
+import net.sf.cglib.proxy.Callback;
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+import net.sf.cglib.proxy.NoOp;
+
+import org.bukkit.entity.Player;
+
+import ultraauth.api.UltraAuthAPI;
+
+/**
+ * Project page: http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/
+ */
+public class UltraAuthHook implements AuthPlugin {
+
+ @Override
+ public void forceLogin(Player player) {
+ UltraAuthAPI.authenticatedPlayer(player);
+ }
+
+ @Override
+ public boolean isRegistered(final String playerName) {
+ return UltraAuthAPI.isRegisterd(createFakePlayer(playerName));
+ }
+
+ private Player createFakePlayer(final String playerName) {
+ Callback implementation = new MethodInterceptor() {
+ @Override
+ public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
+ String methodName = method.getName();
+
+ if (methodName.equals("getName")) {
+ return playerName;
+ }
+
+ // Ignore all other methods
+ throw new UnsupportedOperationException(
+ "The method " + method.getName() + " is not supported for temporary players.");
+ }
+ };
+
+ // CGLib is amazing
+ Enhancer ex = new Enhancer();
+ ex.setInterfaces(new Class>[]{Player.class});
+ ex.setCallbacks(new Callback[]{NoOp.INSTANCE, implementation});
+
+ return (Player) ex.create();
+ }
+
+ @Override
+ public void forceRegister(Player player, String password) {
+ UltraAuthAPI.setPlayerPasswordOnline(player, password);
+ }
+}
diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml
index 0355e5b7..4497e1a5 100644
--- a/bukkit/src/main/resources/plugin.yml
+++ b/bukkit/src/main/resources/plugin.yml
@@ -22,6 +22,7 @@ softdepend:
- CrazyLogin
- LoginSecurity
- RoyalAuth
+ - UltraAuth
commands:
${project.parent.name}:
diff --git a/bungee/pom.xml b/bungee/pom.xml
index b375260f..70d629c4 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -5,7 +5,7 @@
com.github.games647
fastlogin-parent
- 0.5
+ 0.6
../pom.xml
@@ -28,7 +28,7 @@
net.md-5
bungeecord-api
- 1.8-SNAPSHOT
+ 1.9-SNAPSHOT
jar
provided
diff --git a/pom.xml b/pom.xml
index 2a5245a8..895f3bc3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
pom
FastLogin
- 0.5
+ 0.6
2015
https://www.spigotmc.org/resources/fastlogin.14153/
diff --git a/universal/pom.xml b/universal/pom.xml
index 82349a1b..1223e977 100644
--- a/universal/pom.xml
+++ b/universal/pom.xml
@@ -5,7 +5,7 @@
com.github.games647
fastlogin-parent
- 0.5
+ 0.6
../pom.xml