How to install Votifier for Hytale

A powerful Hytale plugin that rewards players for voting on server lists using both Votifier V1 and V2 protocols.


Features

  • Reward Commands - Execute any server commands when players vote
  • Broadcast Messages - Announce votes to all online players with multiple messages
  • Color Support - Full color formatting with TaleMessage tags
  • Vote Notifications - Send in-game UI notifications to voters
  • Custom Sounds - Play sounds when players receive vote rewards
  • Vote Menu - /vote command opens a GUI with clickable vote site links
  • Vote Reminders - Remind players who haven't voted in a while
  • Vote Database - JSON database tracks votes for reminders and statistics
  • Dual Protocol Support - Both Votifier V1 (RSA) and V2 (HMAC-SHA256) on the same port
  • Vote Forwarding - Forward votes to other servers in your network
  • Event System - VoteReceivedEvent for other plugins to integrate
  • Fully Translatable - All messages configurable via JSON configs

Supported Protocols

Protocol Support Description
Votifier V1 Built-in Original protocol using RSA encryption. Uses rsa/public.key for authentication.
NuVotifier V2 Built-in Modern protocol using HMAC-SHA256. Uses token from config.json for authentication.
Webserver Via Votifier For vote sites that send votes via HTTP requests instead of Votifier protocol.

Both V1 and V2 protocols work on the same port simultaneously - no configuration needed.


Installation

  1. Download HyVote from CurseForge
  2. Place the JAR file in your Hytale server's mods folder
  3. Start/restart your server or type /plugin load Hytalist:HyVote
  4. Configure the plugin in mods/Hytalist_HyVote/
  5. Add your server to Hytalist.com
  6. If you need any help, join our Discord!

Configuration

After installation, you'll find configuration files in mods/Hytalist_HyVote/:

config.json

Main configuration file for the Votifier server and rewards:

{
  "Port": 8192,
  "Host": "0.0.0.0",
  "Token": "auto-generated-secure-token",
  "DisableV1Protocol": false,
  "RewardCommands": [
    {
      "Command": "give {player} Rock_Gem_Diamond --quantity 1"
    },
    {
      "Command": "give {player} Rock_Gem_Emerald --quantity 5",
      "Chance": 50
    },
    {
      "Command": "give {player} Rock_Gem_Ruby --quantity 10",
      "Chance": 10,
      "Permission": "hyvote.vip"
    }
  ],
  "BroadcastMessage": true,
  "BroadcastMessages": [
    "<green>{player}</green> <gray>has voted on</gray> <aqua>{service}</aqua><gray>!</gray>",
    "<gold>Vote for the server to receive awesome rewards!</gold>"
  ],
  "DebugMode": false,
  "CheckForUpdates": true
}

Configuration Options

  • Port - Port for Votifier server (default: 8192)
  • Host - Host address to bind to (default: "0.0.0.0")
  • Token - Auto-generated authentication token for V2 vote sites
  • DisableV1Protocol - Disable Votifier V1 protocol support (default: false)
  • RewardCommands - Commands executed when a player votes (array of objects)
  • BroadcastMessage - Enable/disable vote broadcasting
  • BroadcastMessages - Messages sent to all players when someone votes
  • DebugMode - Enable detailed logging for troubleshooting
  • CheckForUpdates - Check for plugin updates on startup (default: true)

RewardCommands Options

Each reward command is an object with the following properties:

  • Command - The command to execute (required)
  • Chance - Chance to execute this command, 0-100 (optional, default: 100)
  • Permission - Required permission to receive this reward (optional)

Available Placeholders

  • {player} - Username of the player who voted
  • {service} - Name of the voting service
  • {address} - IP address of the voter
  • {timestamp} - Unix timestamp of the vote

Note: RSA keys for V1 protocol are auto-generated in rsa/public.key and rsa/private.key.


notification.json

Configure notifications sent to players when they vote:

{
  "Title": {
    "Enabled": false,
    "Title": "<green>Reward Received!</green>",
    "Subtitle": "<gray>Thanks for voting on</gray> <aqua>{service}</aqua><gray>!</gray>",
    "DurationSeconds": 3
  },
  "Notification": {
    "Enabled": true,
    "Title": "<green>Reward Received!</green>",
    "Description": "<gray>Thanks for your vote on</gray> <aqua>{service}</aqua><gray>!</gray>",
    "IconItem": "Rock_Gem_Diamond"
  },
  "Sound": {
    "Enabled": true,
    "Name": "SFX_Player_Pickup_Item"
  }
}

voteCommand.json

Configure the /vote command and vote site links:

{
  "Enabled": true,
  "VoteLinks": {
    "Hytalist.com": "https://hytalist.com/test-server?nick={player}",
    "AnotherServerList": "https://example.com"
  },
  "UI": {
    "Enabled": true,
    "Title": "Vote for the Server"
  },
  "Chat": {
    "Enabled": true,
    "Header": "<gray>========== <green>Vote Links</green> ==========</gray>",
    "Format": "<aqua>{siteName}</aqua><gray>:</gray> <white>{siteUrl}</white>"
  }
}

reminder.json

Configure vote reminders for players who haven't voted recently:

{
  "Enabled": true,
  "AfterHours": 24,
  "DelayInSeconds": 60,
  "Title": {
    "Enabled": true,
    "Title": "Vote Reminder",
    "Subtitle": "Use /vote to support the server!"
  },
  "Sound": {
    "Enabled": true,
    "Name": "SFX_UI_Quest_Objective_Complete"
  }
}

forwarding.json

Forward votes to other servers in your network (useful for BungeeCord/Velocity-style setups):

{
  "Enabled": false,
  "Targets": [
    {
      "Host": "127.0.0.1",
      "Port": 8192,
      "Token": "target-server-token"
    }
  ]
}

Color Formatting

HyVote uses TaleMessage for color formatting. Available tags:

<black>, <dark_blue>, <dark_green>, <dark_aqua>, <dark_red>, <dark_purple>, <gold>, <gray>, <dark_gray>, <blue>, <green>, <aqua>, <red>, <light_purple>, <yellow>, <white>

You can even do rainbow colors:

<gradient:red:yellow:green:blue:purple>Rainbow!</gradient>

Setting Up on Hytalist

For Votifier V2 (Recommended)

  1. Get your token from config.json (auto-generated on first run)
  2. Go to your server's admin panel on Hytalist
  3. Navigate to "Votifier" settings
  4. Enter your server IP and Port (default: 8192)
  5. Paste the Token from your config
  6. Select Votifier V2 protocol
  7. Save and test by voting for your server

For Votifier V1 (Legacy)

  1. Get your public key from rsa/public.key (auto-generated on first run)
  2. Go to your server's admin panel on Hytalist
  3. Navigate to "Votifier" settings
  4. Enter your server IP and Port (same port as V2)
  5. Copy the full content from public.key
  6. Select Votifier V1 protocol
  7. Save and enable DebugMode to test

Commands

  • /vote - Opens the vote menu (permission: hytalist.hyvote.command.vote, allowed by default)
  • /hyvote - Shows HyVote admin commands
  • /hyvote test <player> - Send a test vote for a player (permission: hytalist.hyvote.admin)
  • /hyvote reload - Reload all configuration files (permission: hytalist.hyvote.admin)
  • /testvote <player> - Alias for testing if not taken by another plugin (permission: hytalist.hyvote.admin)

Troubleshooting

Votes not being received?

  1. Enable DebugMode in config.json
  2. Check firewall - ensure Votifier port is open
  3. Verify token matches between config and Hytalist settings
  4. Check server logs for HyVote messages

Common Issues

  • "Invalid signature" (V2) - Token mismatch, check token on vote site
  • "Failed to decrypt" (V1) - Public key mismatch, copy full content from rsa/public.key
  • "No response" - Check firewall/port configuration

Requirements

  • Hytale Server
  • Java 21+

Need Help?

Join our Discord for support: https://discord.gg/fWgDuCThj2

Download HyVote on CurseForge