diff --git a/lib/BungeeCord.jar b/lib/BungeeCord.jar
new file mode 100644
index 00000000..5e7bd18b
Binary files /dev/null and b/lib/BungeeCord.jar differ
diff --git a/lib/bukkit-1.4.7-R1.0.jar b/lib/bukkit-1.4.7-R1.0.jar
deleted file mode 100644
index 1f9725a9..00000000
Binary files a/lib/bukkit-1.4.7-R1.0.jar and /dev/null differ
diff --git a/lib/bungeecord-api-1.4.7-20130228.060400-44.jar b/lib/bungeecord-api-1.4.7-20130228.060400-44.jar
deleted file mode 100644
index 5e49cf3e..00000000
Binary files a/lib/bungeecord-api-1.4.7-20130228.060400-44.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 04b9995b..0a40138d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,12 +28,12 @@
- 2.7.11b3
+ 2.7.12b1
org.bukkit
bukkit
- 1.4.7-R1.0
+ 1.5-R0.1-SNAPSHOT
net.milkbowl.vault
@@ -122,9 +122,9 @@
net.md-5
bungeecord-api
- 1.4.7-SNAPSHOT
+ 1.5-SNAPSHOT
system
- ${project.basedir}/lib/bungeecord-api-1.4.7-20130228.060400-44.jar
+ ${project.basedir}/lib/BungeeCord.jar
com.sun.mail
diff --git a/src/main/java/uk/org/whoami/authme/AuthMe.java b/src/main/java/uk/org/whoami/authme/AuthMe.java
index 8fa9ad91..24d8400e 100644
--- a/src/main/java/uk/org/whoami/authme/AuthMe.java
+++ b/src/main/java/uk/org/whoami/authme/AuthMe.java
@@ -95,6 +95,7 @@ public class AuthMe extends JavaPlugin {
public API api;
public HashMap captcha = new HashMap();
public HashMap cap = new HashMap();
+ public HashMap bungeesIp = new HashMap();
public MultiverseCore mv = null;
@Override
@@ -233,7 +234,11 @@ public class AuthMe extends JavaPlugin {
api = new API(this, database);
management = new Management(database, this);
-
+
+ if (Settings.bungee) {
+ this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
+ this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", new BungeeCord(this));
+ }
PluginManager pm = getServer().getPluginManager();
if (pm.isPluginEnabled("Spout")) {
pm.registerEvents(new AuthMeSpoutListener(database), this);
diff --git a/src/main/java/uk/org/whoami/authme/BungeeCord.java b/src/main/java/uk/org/whoami/authme/BungeeCord.java
new file mode 100644
index 00000000..a23c907d
--- /dev/null
+++ b/src/main/java/uk/org/whoami/authme/BungeeCord.java
@@ -0,0 +1,52 @@
+package uk.org.whoami.authme;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.messaging.PluginMessageListener;
+
+import uk.org.whoami.authme.settings.Settings;
+
+
+public class BungeeCord implements PluginMessageListener {
+
+ public AuthMe plugin;
+
+ public BungeeCord(AuthMe plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public void onPluginMessageReceived(String channel, Player player,
+ byte[] message) {
+
+ if (channel.equals("BungeeCord")) {
+ DataInputStream in = new DataInputStream(new ByteArrayInputStream(
+ message));
+ try {
+
+ String packetType = in.readUTF();
+
+ if (packetType.equals("IP")) {
+
+ if (player.isOnline()) {
+ String ip = in.readUTF();
+
+ if (!Settings.noConsoleSpam)
+ ConsoleLogger.info(
+ "Got data from bungeecord: Player "
+ + player.getName()
+ + " Logged in with IP :" + ip);
+
+ String name = player.getName();
+ plugin.bungeesIp.put(name, ip);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/main/java/uk/org/whoami/authme/Management.java b/src/main/java/uk/org/whoami/authme/Management.java
index 31f851af..db679062 100644
--- a/src/main/java/uk/org/whoami/authme/Management.java
+++ b/src/main/java/uk/org/whoami/authme/Management.java
@@ -5,8 +5,6 @@ import java.util.Date;
import java.util.List;
import me.muizers.Notifications.Notification;
-import net.md_5.bungee.api.connection.ConnectedPlayer;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
@@ -62,12 +60,14 @@ public class Management {
String name = player.getName().toLowerCase();
String ip = player.getAddress().getAddress().getHostAddress();
- if (Settings.bungee && player instanceof ProxiedPlayer) {
- ProxiedPlayer pPlayer = (ProxiedPlayer) player;
- ip = pPlayer.getAddress().getAddress().getHostAddress();
- } else if (Settings.bungee && player instanceof ConnectedPlayer) {
- ConnectedPlayer cPlayer = (ConnectedPlayer) player;
- ip = cPlayer.getAddress().getAddress().getHostAddress();
+ String playerName = player.getName();
+ if (Settings.bungee) {
+ try {
+ if (plugin.bungeesIp.containsKey(playerName))
+ ip = plugin.bungeesIp.get(playerName);
+ } catch (NoClassDefFoundError ncdfe) {
+ ConsoleLogger.showError("Your BungeeCord version is outdated");
+ }
}
World world = player.getWorld();
Location spawnLoc = world.getSpawnLocation();
diff --git a/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java b/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java
index d7e08a85..0820dd21 100644
--- a/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java
+++ b/src/main/java/uk/org/whoami/authme/commands/RegisterCommand.java
@@ -20,8 +20,6 @@ import java.security.NoSuchAlgorithmException;
import java.util.Date;
import me.muizers.Notifications.Notification;
-import net.md_5.bungee.api.connection.ConnectedPlayer;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
@@ -78,14 +76,16 @@ public class RegisterCommand implements CommandExecutor {
final Player player = (Player) sender;
final String name = player.getName().toLowerCase();
+ final String playerName = player.getName();
String ipA = player.getAddress().getAddress().getHostAddress();
- if (Settings.bungee && player instanceof ProxiedPlayer) {
- ProxiedPlayer pPlayer = (ProxiedPlayer) player;
- ipA = pPlayer.getAddress().getAddress().getHostAddress();
- } else if (Settings.bungee && player instanceof ConnectedPlayer) {
- ConnectedPlayer cPlayer = (ConnectedPlayer) player;
- ipA = cPlayer.getAddress().getAddress().getHostAddress();
+ if (Settings.bungee) {
+ try {
+ if (plugin.bungeesIp.containsKey(playerName))
+ ipA = plugin.bungeesIp.get(playerName);
+ } catch (NoClassDefFoundError ncdfe) {
+ ConsoleLogger.showError("Your BungeeCord version is outdated");
+ }
}
final String ip = ipA;
diff --git a/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java
index 6a64034d..7999bc18 100644
--- a/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java
+++ b/src/main/java/uk/org/whoami/authme/datasource/MySQLDataSource.java
@@ -110,7 +110,13 @@ public class MySQLDataSource implements DataSource {
+ lastlocZ + " smallint(6) DEFAULT '0',"
+ columnEmail + " VARCHAR(255) DEFAULT 'your@email.com',"
+ "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));");
-
+
+ rs = con.getMetaData().getColumns(null, null, tableName, columnPassword);
+ if (!rs.next()) {
+ st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
+ + columnPassword + " VARCHAR(255) NOT NULL;");
+ }
+ rs.close();
rs = con.getMetaData().getColumns(null, null, tableName, columnIp);
if (!rs.next()) {
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
diff --git a/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java b/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java
index c7ced642..2abef34f 100644
--- a/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java
+++ b/src/main/java/uk/org/whoami/authme/datasource/SqliteDataSource.java
@@ -93,7 +93,13 @@ public class SqliteDataSource implements DataSource {
+ lastlocZ + " smallint(6) DEFAULT '0',"
+ columnEmail + " VARCHAR(255) DEFAULT 'your@email.com',"
+ "CONSTRAINT table_const_prim PRIMARY KEY (" + columnID + "));");
-
+
+ rs = con.getMetaData().getColumns(null, null, tableName, columnPassword);
+ if (!rs.next()) {
+ st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
+ + columnPassword + " VARCHAR(255) NOT NULL;");
+ }
+ rs.close();
rs = con.getMetaData().getColumns(null, null, tableName, columnIp);
if (!rs.next()) {
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
diff --git a/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java b/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java
index 66a5e8a6..4b8796fb 100644
--- a/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java
+++ b/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java
@@ -16,12 +16,12 @@
package uk.org.whoami.authme.listener;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
-import net.md_5.bungee.api.connection.ConnectedPlayer;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
@@ -664,9 +664,36 @@ public class AuthMePlayerListener implements Listener {
Location spawnLoc = world.getSpawnLocation();
gm = player.getGameMode().getValue();
final String name = player.getName().toLowerCase();
+ final String playerName = player.getName();
gameMode.put(name, gm);
BukkitScheduler sched = plugin.getServer().getScheduler();
final PlayerJoinEvent e = event;
+
+ sched.scheduleSyncDelayedTask(plugin, new Runnable() {
+ public void run() {
+ try {
+
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(b);
+
+ try {
+ out.writeUTF("IP");
+ } catch (IOException e) {
+ // Can never happen
+ }
+
+ plugin.getServer()
+ .getPlayerExact(playerName)
+ .sendPluginMessage(plugin, "BungeeCord",
+ b.toByteArray());
+
+ } catch (Exception exception) {
+
+ exception.printStackTrace();
+
+ }
+ }
+ }, 21L);
if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
@@ -674,12 +701,13 @@ public class AuthMePlayerListener implements Listener {
}
String ip = player.getAddress().getAddress().getHostAddress();
- if (Settings.bungee && player instanceof ProxiedPlayer) {
- ProxiedPlayer pPlayer = (ProxiedPlayer) player;
- ip = pPlayer.getAddress().getAddress().getHostAddress();
- } else if (Settings.bungee && player instanceof ConnectedPlayer) {
- ConnectedPlayer cPlayer = (ConnectedPlayer) player;
- ip = cPlayer.getAddress().getAddress().getHostAddress();
+ if (Settings.bungee) {
+ try {
+ if (plugin.bungeesIp.containsKey(playerName))
+ ip = plugin.bungeesIp.get(playerName);
+ } catch (NoClassDefFoundError ncdfe) {
+ ConsoleLogger.showError("Your BungeeCord version is outdated");
+ }
}
if(Settings.isAllowRestrictedIp && !Settings.getRestrictedIp(name, ip)) {
int gM = gameMode.get(name);
@@ -961,10 +989,9 @@ public class AuthMePlayerListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerInteract(PlayerInteractEvent event) {
- if (event.isCancelled() || event.getPlayer() == null) {
- return;
- }
-
+ if (event.isCancelled() || event.getPlayer() == null) return;
+ if (event.getClickedBlock() == null) return;
+
Player player = event.getPlayer();
String name = player.getName().toLowerCase();
@@ -982,11 +1009,16 @@ public class AuthMePlayerListener implements Listener {
}
}
- final int sign = event.getClickedBlock().getTypeId();
- if (sign == Material.SIGN_POST.getId() || sign == Material.WALL_SIGN.getId()) {
- event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
+ try {
+ final int sign = event.getClickedBlock().getTypeId();
+ if (sign == Material.SIGN_POST.getId() || sign == Material.WALL_SIGN.getId()) {
+ event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
+ }
+ } catch (NullPointerException npe) {
+
}
+
event.setCancelled(true);
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index d203ce4b..51e8b41e 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,7 +3,7 @@ author: darkwarriros,Xephi
website: http://www.multiplayer-italia.com/
description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player.
main: uk.org.whoami.authme.AuthMe
-version: 2.7.11b3
+version: 2.7.12b1
softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag]
commands:
register: