rProx is a Hypixel Proxy Service, acting as a middleman between your client & the Hypixel Network.
rProx watches who joins your games & lobbies, and looks up playerdata and stats
Clone the reposity & install the required dependencies.
npm install
npm run dev # or: npm run build && npm run serveOtherwise, a Windows binary is available here
After this rProx will be running on localhost:25565
On first boot, rProx creates a config.json file. Stop the process, and modify the config to your liking.
It is recommended to set up your Hypixel API Key before proceeding and launching again.
If you'd rather manually create this file before launch, example.config.json contains the same data, and will allow you to set it up before first launch
New settings are automatically filled into your config from new updates or plugins.
() - Required arguments [] - Optional Arguments
Stat Commands:
//help - Shows the ingame help menu
//bw [user] - Shows a players Bedwars statistics
//sw [user] - Shows a players SkyWars statistics
//mm [user] - Shows a players Murder Mystery statistics
//fish [user] - Shows a players Lobby Fishing statistics
//tnt [user] - Shows a players TNT Games statistics
//uhc [user] - Shows a players UHC statistics
//duels [user] [gamemode] - Shows a players Duels statistics
Misc.
//who - Alias for Hypixel /who
//plugins - View loaded and available plugins
//reward [link] - Show the daily reward options for the last link seen in chat
//reward claim [1-3] - Claim a daily reward, highest tier if no option is given
//afk [on|off] - Toggle anti-afk, which DMs you a random string every intervalSeconds and hides the To/From echo
//session [reset] - Full breakdown of what you have fished in this session, per category and per hour
//bossbar [info|test [seconds]|off|mode <replace|adopt|own>|entity <dragon|wither>] - Put a test boss bar up, print what the injector is holding, or change how it draws without a restart
rProx comes with 6 inbuilt plugins for basic tooling, such as the stat commands mentioned previously, nametagStats, antiAfk, lobbyFishing & a daily reward handler
Configuration for these are set in config.json section called builtInPlugins - This section also works for configuration for external plugins, but the tooling for this is uncomplete.
The built in plugins include:
- hypixelStats
Allows usage of //bw, //sw, //uhc, etc.
{
"enabled": true,
"apiKey": "", // Hypixel API Key
"cacheTtlSeconds": 300
}- nametagStats
Shows player statistics in the tab menu or above their playerhead in lobbies & games
"nametagStats": {
"enabled": true,
"aboveHead": true, // show stats above the players head
"tablist": true, // show stats in the tablist
"maxTablistPlayers": 32, // player list size above which we stop looking anyone new up, tablist and above-head alike. raise it to cover big hubs, at the cost of the API ratelimit
"cacheTtlSeconds": 120,
"lookupConcurrency": 4 // how many lookups are allowed to be in flight at once
} // NOTE: API Key here leeches from hypixelStats- dailyRewards
Automatically claims daily reward links in chat
"dailyRewards": {
"enabled": true,
"mode": "chat", // chat or auto - Decides if it should automatically claim a link when seen, or give the option to pick in chat
"prefer": [], // which specific game to prefer, ie. "uhc", "skywars", "walls3". Will autopick this incase of ties
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) rProx/0.1", // what the reward page is asked as
"timeoutMs": 10000
}- lobbyFishing
Counts what you catch while lobby fishing and puts the session totals on the sidebar, underneath Hypixels own fishing lines
Also helps with a mythical fish boss bar
"lobbyFishing": {
"enabled": true,
"sidebar": true, // false counts catches for //catches without touching the sidebar
"maxSidebarLines": 15, // rows your client actually renders. raise it if yours draws more than vanilla, and none of Hypixels rows get hidden
"spacer": true, // blank row between Hypixels rows and ours
"hideRows": ["hypixel level"], // Hypixel rows to drop to make room, matched as regex, colorless and case insensitively
"colors": { // the number color per row, a name like "gold" or a code like "§6"
"total": "green",
"fish": "yellow",
"plant": "dark_green",
"mythical": "gold",
"treasure": "aqua",
"junk": "gray",
"creature": "light_purple"
},
"mythical": {
"enabled": true,
"bossBar": true, // show heat on bossbar
"debug": false, // allow //bossbar debug commands
"bar": "heat", // what bar progress fills with, "heat" or "progress
"bossBarMode": "replace", // "replace", "adopt" or "own". use replace
"bossEntity": "dragon", // "wither" or "dragon"
"heatPerClick": 10,
"heatDecayPerSecond": 15,
"heatMax": 100,
"safeHeat": 40 // when to start saying HOLD instead of CLICK
}
}- antiAfk
Prevents you from being afk-kicked in lobbies
Can be toggled with //afk on & //afk off
"antiAfk": {
"enabled": false, // NOTE - by default this is the only plugin thats deactivated
"intervalSeconds": 150, // time between triggering
"prefix": "[AFK] ", // message prefix
"charset": "abcdefghijklmnopqrstuvwxyz0123456789", // characters to pick from when designing a random message
"messageLength": 16, // how long the random message should be
"hideMessages": true, // if the messages should be hidden from you
"autoStart": true, // if should be enabled on login, or you have to use //afk on
"targetUser": null // what user to message. If null, will message yourself.
}rProx supports custom Plugins to add extended functionality and stat checking features.
Writing a plugin is simple. Add a file in the ./plugins/ directory (Or whats set in pluginDirectory in the config). Plugins support javascript code.
An example is supplied in plugins/example.plugin.js.
A plugin can ship its own settings by exporting a defaultConfig alongside name
and setup. It gets written into builtInPlugins under the plugins name the first
time it loads, and handed back as api.pluginConfig:
module.exports = {
name: "example",
defaultConfig: {
enabled: true,
reply: "pong",
},
setup(api) {
const reply = api.pluginConfig.reply ?? "pong"; // already filled in from config.json
// ...
},
}A plugin without a defaultConfig still gets an "enabled": true block written for it, so anything in the directory can be switched off from config.json.