Fix old missing method

This commit is contained in:
filoghost 2016-03-03 12:17:56 +01:00
parent df6ff3f793
commit 7faa9cbe85
3 changed files with 45 additions and 3 deletions

View File

@ -12,6 +12,7 @@ import com.gmail.filoghost.chestcommands.internal.ExtendedIconMenu;
import com.gmail.filoghost.chestcommands.internal.MenuInventoryHolder;
import com.gmail.filoghost.chestcommands.task.ErrorLoggerTask;
import com.gmail.filoghost.chestcommands.util.ErrorLogger;
import com.gmail.filoghost.chestcommands.util.VersionUtils;
public class CommandHandler extends CommandFramework {
@ -46,7 +47,7 @@ public class CommandHandler extends CommandFramework {
if (args[0].equalsIgnoreCase("reload")) {
CommandValidate.isTrue(sender.hasPermission(Permissions.COMMAND_BASE + "reload"), "You don't have permission.");
for (Player player : Bukkit.getOnlinePlayers()) {
for (Player player : VersionUtils.getOnlinePlayers()) {
if (player.getOpenInventory() != null) {
if (player.getOpenInventory().getTopInventory().getHolder() instanceof MenuInventoryHolder || player.getOpenInventory().getBottomInventory().getHolder() instanceof MenuInventoryHolder) {
player.closeInventory();

View File

@ -1,12 +1,12 @@
package com.gmail.filoghost.chestcommands.task;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import com.gmail.filoghost.chestcommands.internal.ExtendedIconMenu;
import com.gmail.filoghost.chestcommands.internal.MenuInventoryHolder;
import com.gmail.filoghost.chestcommands.util.VersionUtils;
public class RefreshMenusTask implements Runnable {
@ -15,7 +15,7 @@ public class RefreshMenusTask implements Runnable {
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
for (Player player : VersionUtils.getOnlinePlayers()) {
InventoryView view = player.getOpenInventory();
if (view == null) {

View File

@ -0,0 +1,41 @@
package com.gmail.filoghost.chestcommands.util;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.google.common.collect.ImmutableList;
public class VersionUtils {
private static boolean setup;
private static Method oldGetOnlinePlayersMethod;
private static boolean useReflection;
public static Collection<? extends Player> getOnlinePlayers() {
try {
if (!setup) {
oldGetOnlinePlayersMethod = Bukkit.class.getDeclaredMethod("getOnlinePlayers");
if (oldGetOnlinePlayersMethod.getReturnType() == Player[].class) {
useReflection = true;
}
setup = true;
}
if (!useReflection) {
return Bukkit.getOnlinePlayers();
} else {
Player[] playersArray = (Player[]) oldGetOnlinePlayersMethod.invoke(null);
return ImmutableList.copyOf(playersArray);
}
} catch (Exception e) {
e.printStackTrace();
return Collections.emptyList();
}
}
}