Add reflection to support old version of Bukkit/Spigot
This commit is contained in:
parent
70a6506d6e
commit
4e75fb76d0
@ -6,6 +6,7 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@ -283,7 +284,18 @@ public class AuthMe extends JavaPlugin {
|
|||||||
if (Settings.reloadSupport)
|
if (Settings.reloadSupport)
|
||||||
try {
|
try {
|
||||||
onReload();
|
onReload();
|
||||||
if (server.getOnlinePlayers().size() < 1) {
|
int playersOnline = 0;
|
||||||
|
try {
|
||||||
|
if (Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).getReturnType() == Collection.class)
|
||||||
|
playersOnline = ((Collection<?>) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).size();
|
||||||
|
else playersOnline = ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).length;
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
} // can never happen
|
||||||
|
catch (InvocationTargetException ex) {
|
||||||
|
} // can also never happen
|
||||||
|
catch (IllegalAccessException ex) {
|
||||||
|
} // can still never happen
|
||||||
|
if (playersOnline < 1) {
|
||||||
try {
|
try {
|
||||||
database.purgeLogged();
|
database.purgeLogged();
|
||||||
} catch (NullPointerException npe) {
|
} catch (NullPointerException npe) {
|
||||||
@ -453,7 +465,18 @@ public class AuthMe extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
if (Bukkit.getOnlinePlayers().size() != 0)
|
int playersOnline = 0;
|
||||||
|
try {
|
||||||
|
if (Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).getReturnType() == Collection.class)
|
||||||
|
playersOnline = ((Collection<?>) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).size();
|
||||||
|
else playersOnline = ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).length;
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
} // can never happen
|
||||||
|
catch (InvocationTargetException ex) {
|
||||||
|
} // can also never happen
|
||||||
|
catch (IllegalAccessException ex) {
|
||||||
|
} // can still never happen
|
||||||
|
if (playersOnline != 0)
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
this.savePlayer(player);
|
this.savePlayer(player);
|
||||||
}
|
}
|
||||||
@ -738,10 +761,21 @@ public class AuthMe extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String replaceAllInfos(String message, Player player) {
|
public String replaceAllInfos(String message, Player player) {
|
||||||
|
int playersOnline = 0;
|
||||||
|
try {
|
||||||
|
if (Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).getReturnType() == Collection.class)
|
||||||
|
playersOnline = ((Collection<?>) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).size();
|
||||||
|
else playersOnline = ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).length;
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
} // can never happen
|
||||||
|
catch (InvocationTargetException ex) {
|
||||||
|
} // can also never happen
|
||||||
|
catch (IllegalAccessException ex) {
|
||||||
|
} // can still never happen
|
||||||
try {
|
try {
|
||||||
message = message.replace("&", "\u00a7");
|
message = message.replace("&", "\u00a7");
|
||||||
message = message.replace("{PLAYER}", player.getName());
|
message = message.replace("{PLAYER}", player.getName());
|
||||||
message = message.replace("{ONLINE}", "" + this.getServer().getOnlinePlayers().size());
|
message = message.replace("{ONLINE}", "" + playersOnline);
|
||||||
message = message.replace("{MAXPLAYERS}", "" + this.getServer().getMaxPlayers());
|
message = message.replace("{MAXPLAYERS}", "" + this.getServer().getMaxPlayers());
|
||||||
message = message.replace("{IP}", getIP(player));
|
message = message.replace("{IP}", getIP(player));
|
||||||
message = message.replace("{LOGINS}", "" + PlayerCache.getInstance().getLogged());
|
message = message.replace("{LOGINS}", "" + PlayerCache.getInstance().getLogged());
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package fr.xephi.authme.listener;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.regex.PatternSyntaxException;
|
import java.util.regex.PatternSyntaxException;
|
||||||
@ -521,7 +523,18 @@ public class AuthMePlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.getServer().getOnlinePlayers().size() > plugin.getServer().getMaxPlayers()) {
|
int playersOnline = 0;
|
||||||
|
try {
|
||||||
|
if (Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).getReturnType() == Collection.class)
|
||||||
|
playersOnline = ((Collection<?>) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).size();
|
||||||
|
else playersOnline = ((Player[]) Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]).invoke(null, new Object[0])).length;
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
} // can never happen
|
||||||
|
catch (InvocationTargetException ex) {
|
||||||
|
} // can also never happen
|
||||||
|
catch (IllegalAccessException ex) {
|
||||||
|
} // can still never happen
|
||||||
|
if (playersOnline > plugin.getServer().getMaxPlayers()) {
|
||||||
event.allow();
|
event.allow();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user