VotePipe

Developer Mode: Events

Developer

Handle vote events programmatically with custom code (Developer Mode)

💡 New to VotePipe? Consider Automatic Mode for visual configuration without coding!

VoteReceivedEvent

This event is emitted when a vote is received from VotePipe. You must respond with success or failure so VotePipe knows whether to retry.

Event Fields

FieldTypeDescription
voteIdStringUnique vote identifier (UUID)
voterNameStringPlayer username who voted
providerStringProvider key (e.g., "hytale-servers-pro")
providerNameStringProvider display name
receivedAtInstantWhen the vote was received

Response Methods

MethodWhen to UseVotePipe Action
event.success()Reward was given successfullyMarks vote as claimed
event.fail(reason)Could not give reward (retry later)Marks vote as failed, retries next poll

Example: Basic Reward Handler

java
@EventHandler public void onVoteReceived(VoteReceivedEvent event) { String playerName = event.getVoterName(); Player player = Bukkit.getPlayer(playerName); if (player == null || !player.isOnline()) { // Player offline - VotePipe will retry next poll event.fail("Player offline"); return; } // Give reward player.getInventory().addItem(new ItemStack(Material.DIAMOND, 1)); player.sendMessage("Thanks for voting on " + event.getProviderName() + "!"); // Mark as successful event.success(); }

Example: Queued Rewards

For better handling of offline players, you can queue rewards and mark as success:

java
@EventHandler public void onVoteReceived(VoteReceivedEvent event) { String playerName = event.getVoterName(); Player player = Bukkit.getPlayer(playerName); if (player != null && player.isOnline()) { // Give reward immediately giveReward(player); player.sendMessage("Thanks for voting!"); } else { // Queue reward for when they join pendingRewards.add(playerName, event.getProvider()); // Still mark as success - we'll handle delivery ourselves } // Always mark as success since we're handling the queuing event.success(); } @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); List<String> rewards = pendingRewards.get(player.getName()); if (!rewards.isEmpty()) { for (String provider : rewards) { giveReward(player); } player.sendMessage("You received " + rewards.size() + " vote reward(s)!"); pendingRewards.remove(player.getName()); } }

Tip: If you handle reward queuing yourself, always call event.success(). Only use event.fail() if you want VotePipe to retry the vote.

Common Failure Scenarios

ScenarioRecommended ActionResult
Player online, reward givenevent.success()Vote marked claimed
Player offlineevent.fail("Player offline")Retry on next poll
Inventory fullevent.fail("Inventory full")Retry on next poll
Unknown player (typo on vote site)event.success()Don't retry forever
No response (timeout)AutomaticRetry on next poll

Next Steps