@Override public void run() { QueuedPlayer qp = queuedPlayers.poll(); if (qp != null) { platform.executeAsync(new PlayerCommandExecutor(qp, platform)); } }
public void initializeTasks() { try { serverInformation = platform.getApiClient().getServerInformation(); } catch (IOException | ApiException e) { throw new RuntimeException("Can't fetch account information", e); } executorService.schedule(playerFetcher = new DuePlayerFetcher(platform, verbose), 1, TimeUnit.SECONDS); }
@Override public String replace(String command, QueuedPlayer player, QueuedCommand queuedCommand) { if (player.getUuid() == null) { return command; // can't replace UUID for offline mode } return REPLACE_UUID.matcher(command).replaceAll(UuidUtil.mojangUuidToJavaUuid(player.getUuid()).toString()); } }
@Override public void execute(CommandSender sender, String[] args) { if (args.length != 0) { sender.sendMessage(TextFormat.RED + plugin.getI18n().get("no_params")); return; } if (plugin.getApiClient() == null) { sender.sendMessage(TextFormat.RED + plugin.getI18n().get("need_secret_key")); return; } if (plugin.getDuePlayerFetcher().inProgress()) { sender.sendMessage(TextFormat.RED + plugin.getI18n().get("already_checking_for_purchases")); return; } plugin.getPlatform().executeAsync(() -> plugin.getDuePlayerFetcher().run(false)); sender.sendMessage(TextFormat.GREEN + plugin.getI18n().get("forcecheck_queued")); }
private Player getPlayer(QueuedPlayer player) { if (player.getUuid() != null && (plugin.getServer().getOnlineMode() || plugin.getConfiguration().isBungeeCord())) { return plugin.getServer().getPlayer(UuidUtil.mojangUuidToJavaUuid(player.getUuid())); } return plugin.getServer().getPlayerExact(player.getName()); }
private Optional<Player> getPlayer(QueuedPlayer player) { if (player.getUuid() != null && (plugin.getConfiguration().isBungeeCord() || Sponge.getServer().getOnlineMode())) { return Sponge.getServer().getPlayer(UuidUtil.mojangUuidToJavaUuid(player.getUuid())); } return Sponge.getServer().getPlayer(player.getName()); }
@Override public String replace(String command, QueuedPlayer player, QueuedCommand queuedCommand) { if (player.getUuid() == null || player.getUuid() == "") { return REPLACE_NAME.matcher(command).replaceAll(player.getName()); } OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(UuidUtil.mojangUuidToJavaUuid(player.getUuid())); if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) { return REPLACE_NAME.matcher(command).replaceAll(player.getName()); } return REPLACE_NAME.matcher(command).replaceAll(offlinePlayer.getName()); } }
@Override public CommandResult execute(CommandSource src, CommandContext args) throws CommandException { if (plugin.getApiClient() == null) { src.sendMessage(Text.builder(plugin.getI18n().get("need_secret_key")).color(TextColors.RED).build()); } else { plugin.getPlatform().executeAsync(plugin.getListingUpdateTask()); src.sendMessage(Text.builder(plugin.getI18n().get("refresh_queued")).color(TextColors.GREEN).build()); } return CommandResult.success(); } }
private void deleteCoupon(final CommandSender sender, String[] args) { if (args.length != 2) { sender.sendMessage(ChatColor.RED + plugin.getI18n().get("no_coupon_specified")); return; } final String code = args[1]; plugin.getPlatform().executeAsync(new Runnable() { @Override public void run() { try { plugin.getApiClient().deleteCoupon(code); sender.sendMessage(ChatColor.GREEN + plugin.getI18n().get("coupon_deleted")); } catch (ApiException | IOException e) { sender.sendMessage(ChatColor.RED + e.getMessage()); return; } } }); }
private void deleteCoupon(final CommandSender sender, String[] args) { if (args.length != 2) { sender.sendMessage(ChatColor.RED + plugin.getI18n().get("no_coupon_specified")); return; } final String code = args[1]; plugin.getPlatform().executeAsync(new Runnable() { @Override public void run() { try { plugin.getApiClient().deleteCoupon(code); sender.sendMessage(ChatColor.GREEN + plugin.getI18n().get("coupon_deleted")); } catch (ApiException | IOException e) { sender.sendMessage(ChatColor.RED + e.getMessage()); return; } } }); }
private void deleteCoupon(final CommandSender sender, String[] args) { if (args.length != 2) { sender.sendMessage(TextFormat.RED + plugin.getI18n().get("no_coupon_specified")); return; } final String code = args[1]; plugin.getPlatform().executeAsync(new Runnable() { @Override public void run() { try { plugin.getApiClient().deleteCoupon(code); sender.sendMessage(TextFormat.GREEN + plugin.getI18n().get("coupon_deleted")); } catch (ApiException | IOException e) { sender.sendMessage(TextFormat.RED + e.getMessage()); return; } } }); }
public static void postServerInformation(OkHttpClient client, String serverKey, IBuycraftPlatform platform, boolean onlineMode) throws IOException { Map<String, Object> serverData = new LinkedHashMap<>(); Map<String, Object> pluginData = new LinkedHashMap<>(); // Server data serverData.put("platform", platform.getPlatformInformation().getType().platformName()); serverData.put("platform_version", platform.getPlatformInformation().getVersion()); serverData.put("online_mode", onlineMode); // Plugin data pluginData.put("version", platform.getPluginVersion()); // Combine and send to Buycraft Map<String, Object> keenData = new LinkedHashMap<>(); keenData.put("server", serverData); keenData.put("plugin", pluginData); AnalyticsSend.sendAnalytics(client, serverKey, keenData); } }
public void flush() { if (!completed.isEmpty()) { for (List<Integer> list : Lists.partition(new ArrayList<>(completed), MAXIMUM_COMMANDS_TO_POST)) { try { platform.getApiClient().deleteCommand(list); } catch (IOException | ApiException e) { platform.log(Level.SEVERE, "Unable to mark commands as completed", e); break; } } } } }
@EventHandler public void onPostLogin(final PlayerJoinEvent event) { if (event.getPlayer().hasPermission("buycraft.admin") && !upToDate) { plugin.getPlatform().executeAsyncLater(new Runnable() { @Override public void run() { event.getPlayer().sendMessage(TextFormat.YELLOW + plugin.getI18n().get("update_available", lastKnownVersion.getVersion())); } }, 3, TimeUnit.SECONDS); } } }
@EventHandler public void onPlayerJoin(final PlayerJoinEvent event) { if (event.getPlayer().hasPermission("buycraft.admin") && !upToDate) { plugin.getPlatform().executeAsyncLater(new Runnable() { @Override public void run() { event.getPlayer().sendMessage(ChatColor.YELLOW + plugin.getI18n().get("update_available", lastKnownVersion.getVersion())); } }, 3, TimeUnit.SECONDS); } } }
@EventHandler public void onPostLogin(final PostLoginEvent event) { if (event.getPlayer().hasPermission("buycraft.admin") && !upToDate) { plugin.getPlatform().executeAsyncLater(new Runnable() { @Override public void run() { event.getPlayer().sendMessage(ChatColor.YELLOW + plugin.getI18n().get("update_available", lastKnownVersion.getVersion())); } }, 3, TimeUnit.SECONDS); } } }
@Override public void run() { if (platform.getApiClient() == null) { // no API client return; } try { listing.set(platform.getApiClient().retrieveListing()); } catch (IOException | ApiException e) { platform.log(Level.SEVERE, "Error whilst retrieving listing", e); return; } lastUpdate.set(new Date()); if (updateTask != null) { updateTask.run(); } }
public boolean canExecute(IBuycraftPlatform platform) { Integer requiredSlots = command.getConditions().get("slots"); if (requiredSlots != null || requireOnline) { if (!platform.isPlayerOnline(player)) { return false; } } if (requiredSlots != null) { int free = platform.getFreeSlots(player); if (free < requiredSlots) { return false; } } Integer delay = command.getConditions().get("delay"); return !(delay != null && delay > 0 && System.currentTimeMillis() - queueTime < TimeUnit.SECONDS.toMillis(delay)); } }
@Override public void run() { List<Integer> commandsToPost = new ArrayList<>(); while (commandsToPost.size() < MAXIMUM_COMMANDS_TO_POST) { Integer posted = completed.poll(); if (posted == null) break; commandsToPost.add(posted); } if (!commandsToPost.isEmpty()) { try { platform.getApiClient().deleteCommand(commandsToPost); } catch (IOException | ApiException e) { platform.log(Level.SEVERE, "Unable to mark commands as completed", e); // TODO: Retry? } } }