A standalone implemention of the BungeeCord plugin for EaglercraftX, now with online vanilla server support!
Go to file
2024-03-25 16:25:36 -07:00
.config eaglerproxy 1.0.7, eagpaas 1.0.1, smart compile 2023-06-21 10:45:22 +00:00
example_plugins fixed bug that would cause the client to not disconnect if an error occurs whilst switching servers 2023-07-05 11:09:30 -07:00
replit_runtime ran prettier 2023-07-04 19:01:02 -07:00
src Final touch-ups 2024-03-22 17:16:37 -07:00
.DS_Store Final touch-ups 2024-03-22 17:16:37 -07:00
.gitignore Update .gitignore 2024-03-25 16:25:36 -07:00
.replit Update .replit 2023-06-06 23:10:07 -08:00
package-lock.json Final touch-ups 2024-03-22 17:16:37 -07:00
package.json Final touch-ups 2024-03-22 17:16:37 -07:00
README.md Final touch-ups 2024-03-22 17:16:37 -07:00
replit_launch.sh added smart compilation to decrease startup time 2023-06-21 09:04:25 +00:00
replit.nix require node.js 18 2023-06-06 23:18:22 -08:00
tsconfig.json fixed bug that would cause the client to not disconnect if an error occurs whilst switching servers 2023-07-05 11:09:30 -07:00

EaglerProxy


A standalone reimplementation of EaglercraftX's bungee plugin written in TypeScript, with plugin support.

Working for latest EaglercraftX client version as of 6/15/2023

Known Issues

  • [EagProxyAAS] Player is missing skin when connected to server
    • Due to Eaglercraft's skin system and how it works, forcing skins onto the client is impossible (from what I know so far). This is only a client-sided bug/glitch - others will only see your Mojang/Minecraft account skin and cape.

Installing and Running

This assumes that you have Node.js LTS or higher installed on your computer, and that you have basic Git and CLI (command line) knowledge.

  1. Clone/download this repository.
  2. Modify and configure config.ts to your liking.
  3. Install TypeScript and required dependencies (npm i -g typescript and npm i).
  4. Compile the TypeScript code into normal JavaScript code (tsc).
  5. Go into the build directory, and run node index.js.

Important: For non-traditional runtime environments

For the most part, this proxy (and its dependencies) transpiles to pure JavaScript, and does not require anything more than a full implementation of the Node.js API (with the exception of node-gyp/native support). Crypto support is required for the proxy to run.
If you are running the proxy through either Termux or CodeSandbox's on-device runtime:

  1. Uninstall sharp, and ensure that jimp is installed.
  2. Edit config.ts and set adapter.useNatives to false.

The above steps can solve any issues where the proxy immediately crashes with a segfault/illegal instruction error.

Plugins

As of right now, there only exists one plugin: EagProxyAAS (read below for more information).

EagProxyAAS

EagProxyAAS aims to allow any Eaglercraft client to connect to a normal 1.8.9 Minecraft server, provided that players own a legitimate Minecraft Java copy.

I don't want to use this plugin!

Remove all the folders in src/plugins.

IMPORTANT: READ ME BEFORE USING

IMPORTANT: Although the vanilla Eaglercraft client is a safe, modified copy of Minecraft AOT-compiled to JavaScript, I cannot guarantee that you will not get flagged by all anticheats. While gameplay and testing has shown to be relatively stable and free of anticheat flags, more testing is needed to derive a conclusion on whether or not using EaglerProxy with EagProxyAAS is safe.

EaglerProxy and EagProxyAAS:

  • is compatible with EaglercraftX and uses its handshake system,
  • intercepts and reads Minecraft packet traffic between you and the server on the other end (necessary for functionality),
  • only uses login data to authenticate with vanilla Minecraft servers,
  • and is open source and safe to use.

EaglerProxy and EagProxyAAS does NOT:

  • include any Microsoft/Mojang code,
  • store or otherwise use authentication data for any other purpose as listed on the README,
    • Unmodified versions will not maliciously handle your login data, although a modified version has the ability to do so. Only use trusted and unmodified versions of both this plugin and proxy.
  • and intentionally put your account at risk.

Remember, open source software is never 100% safe. Read what you run on your computer.

Plugin Development

Disclaimer

The proxy's software utilizes its own plugin API written in JavaScript, rather than BungeeCord's plugin API. For this reason, plugins written for the official BungeeCord plugin will not work on this proxy. Below are some instructions for making your very own EaglerProxy plugin. Refer to src/plugins/EagProxyAAS for an example plugin.
Each and every EaglerProxy plugin consists of two parts:

  • an entry point JavaScript file (this file is ran when the plugin is loaded)
  • a metadata.json metadata file

Below is a breakdown of everything inside of metadata.json:

{
    "name": "Example Plugin",
    "id": "examplePlugin",
    "version": "1.0.0",
    "entry_point": "index.js",
    "requirements": [{ id: "otherPlugin", version: "1.0.0" }],
    "incompatibilities": [{ id: "someOtherPlugin", version: "2.0.0" }],
    "load_after": ["otherPlugin"]
}

As of right now, there exists no API reference. Please refer to the preinstalled plugin for details regarding API usage.

Reporting Issues

NOTE: Issues asking for help will be converted into discussions. You are expected to have thoroughly read all documentation prior to asking for help.

  • Security-related bugs/issues: Directly contact me on Discord (check my profile).
  • Non-security-related bugs/issues: Open a new issue, with the following:
    • Bug description
    • Affected versions
    • Reproduction steps (optional if you can't find)