- 216
- 6
- 19
Может быть кому-то пригодится
Отрывок кода из CustomNpcs 1.7.10.
Отрывок кода из CustomNpcs 1.7.10.
Код:
public final class PermissionsLoader {
private Class<?> bukkit;
private Method getPlayer;
private Method hasPermission;
private static PermissionsLoader Instance;
public static final PermissionsLoader getInstance() {
return Instance;;
}
// Создаем экземпляр этого класса в главном классе мода
public PermissionsLoader() {
Instance = this;
try {
bukkit = Class.forName("org.bukkit.Bukkit");
getPlayer = bukkit.getMethod("getPlayer", String.class);
hasPermission = Class.forName("org.bukkit.entity.Player").getMethod("hasPermission", String.class);
System.out.println("Bukkit permissions enabled");
System.out.println("Permissions available:");
Collections.sort(Permission.permissions, String.CASE_INSENSITIVE_ORDER);
for (final String p : Permission.permissions) {
System.out.println(p);
}
} catch (final ClassNotFoundException e) {
// bukkit/mcpc+ is not loaded
} catch (final NoSuchMethodException e) {
e.printStackTrace();
} catch (final SecurityException e) {
e.printStackTrace();
}
}
public static final boolean hasPermission(final EntityPlayer player, final Permission permission) {
if (Instance.bukkit != null)
return Instance.bukkitPermission(player.getCommandSenderName(), permission.name);
return true;
}
private final boolean bukkitPermission(final String username, final String permission) {
try {
final Object player = getPlayer.invoke(null, username);
return (Boolean) hasPermission.invoke(player, permission);
} catch (final IllegalAccessException e) {
e.printStackTrace();
} catch (final IllegalArgumentException e) {
e.printStackTrace();
} catch (final InvocationTargetException e) {
e.printStackTrace();
}
return false;
}
public static final class Permission {
private static final List<String> permissions = new ArrayList<String>();
public String name;
public Permission(final String name) {
this.name = name;
if (!permissions.contains(name)) {
permissions.add(name);
}
}
}
public static final boolean hasPermissionString(final EntityPlayerMP player, final String permission) {
if (Instance.bukkit != null)
return Instance.bukkitPermission(player.getCommandSenderName(), permission);
return true;
}
}