Skip to content
This repository has been archived by the owner on Jun 10, 2023. It is now read-only.
Mose edited this page Jun 21, 2020 · 3 revisions

Bonge

Install

Sponge Vanilla and Lantern
**Lantern users only follow these steps before starting - These steps can be ignored however may cause issues when loading** 1. Open the Lantern settings 2. Change the Sponge plugins folder location to another 3. Move your Sponge plugins into that new location **Bonge plugins can be launched from another location if changed in the Bonge config, however this may break support for some plugins**
  1. Download the latest compatible release of Bonge
  2. Place the downloaded file into your Sponge plugins folder (Sponge Vanilla it is the folder named "Mods", Lantern it is the folder you changed)
  3. Run the server
  4. After the server has started completely, shut down the server. A new folder called "plugins" will appear
  5. Download and place any Bukkit plugin you wish to run into the plugins folder
  6. Run the server and enjoy
Sponge Forge
Sponge Forge does not allow the loading of some files that Bukkit plugins required, therefore Forge needs to be modified to have these files added directly to the Forge file for Bonge to correctly load plugins. This is compatible with every Forge version no matter of MC version or release version and does not harm Forge at all. A backup of your Forge version is created and that's the file that is modified therefore no harm will come to Forge. No files inside Forge are modified, only files are added to it therefore compatibility with the modifications will not be affected.

If you run on a server host, please make sure that you are allowed to upload custom versions of Forge.jar (or minecraft-server.jar - please follow steps as normal only instead of Forge.jar, use minecraft-server.jar), if you are not then please get in contact with your server host to allow the use of a modified version of Forge, they may be willing to patch the Forge they provide for users of theirs to use or may outright allow the uploading of custom Forge varients. Sadly we cannot safely patch Forge while Forge is running. If this is the case please make an issue on our GitHub issues page requesting your desire. If you know a workaround for Forge to load Bonge then, by all means, make a pull request, we wish to make the install process as simple as possible.

  1. Download the latest compatible release of Bonge
  2. Place the downloaded file into your Sponge plugins folder (Sponge Forge it is the folder named "Mods")
  3. Run Bonge as a normal application
Open Bonge via command
1. Open your command prompt (Windows - search "CMD", Linux and MacOS - search "Terminal")
2. type the following command `cd ` (where is the location to the folder that Bonge is located in)
3. Hit enter
4. type the following command `java -jar Bonge.jar`
5. hit enter
  1. Select the "Search" button
  2. Select your Forge.jar file
  3. Select the "Patch" file.
  4. Wait for the progress bar to state "Complete" (This will create a new file named "Patched-Forge.jar")
  5. Run Patched-Forge.jar as your regular Forge.jar file

What is compatible

Take a look at our compatibility list here (Google Sheets). There is an option within the bar at the top labeled "Search" which will filter out all entries that do not comply to what you are searching for

My plugin isn't listed

This means that no one has tested it and reported the findings. You can always add your own findings here (Google Forms)

The plugin I'm searching for comes up multiple times

First, check the plugin version and Bonge version it was tested on, as well as the developer of the plugin. if all the same then it could be the fact we do not maintain the list, anyone can add what they like, therefore there may be multiple reports of the same plugin.

What is the end goal of Bonge?

While it would be nice to have 100% compatibility, we knew before Bonge was even a concept that it would never gain 100% compatibility due to many plugins bypassing BukkitAPI and interacting with CraftBukkit and NMS which we cannot emulate. Not to mention that the Bonge team is small compared to the number of developers for the Bukkit ecosystem resulting in what was 100% of plugins five seconds ago now be 99%, we could never keep up.

Therefore our end goal is not a percent, not even a number of plugins supported, our end goal is for more of the Bukkit developers to be aware of Sponge's presents. By emulating plugins, the user will use Bonge (or another emulator like Pore) to emulate their favorite plugins, in which methods such as word of mouth, or even crash reports will eventually get to the developer of those plugins in which hopefully they would look into and attempt to make their own plugin more compatible with Bonge or just outright make a Sponge variant of there plugin.

By achieving a higher compatibility level and get developers aware of Sponge, server owners may end up switching to Sponge due to the multiple reasons on what Sponge was founded on. If more users use Sponge, then developers of Bukkit plugins may end up creating a port of their plugin for Sponge anyway. This has a lot of big IFs and MAYBEs so we are focusing on the main goal of awareness.

How Bonge works

Bonge is a High-Level Bukkit emulator. This means that Bonge treats itself as the platform that the software (in this case plugins) run on. In a more detail, in high-level programming (which is a more written language friendly version of programming) you typically write code by redirecting the current position of what is being read to another location, these are called "Calls". The BukkitAPI has 1000s of calls that make calls directly into Minecraft's NMS code. Plugins make calls from the plugin to BukkitAPI which quickly gives a result. Bonge takes those calls from the BukkitAPI however instead of directing them into Minecraft's NMS, it instead directs them into SpongeAPI.

How did you get Forge Blocks and Items to work with Bukkit plugins

If you take a look at any other BukkitAPI implementation that runs on a platform that has more blocks and items then what BukkitAPI provides, you will find that it doesn't support those blocks and items, instead, it shoves Bukkit plugins into its own bubble where they can only interact with base Minecraft and other Bukkit plugins. As the majority of servers that run SpongeAPI are SpongeForge based, it didn't make sense to have a fixed list of vanilla blocks and items that could only be used. Just imagine a protection plugin that would only work on some locations.

As you may know, the Spigot and original Bukkit team insistence on making plugins as backward compatible as possible, this has lead to some files within the BukkitAPI needing serious hacking to get working in regular Craftbukkit (including Spigot, Paper, etc). Some of this hacking breaks the rules of Java, such as the Materials enum list (this is a fixed list) which depending on if the plugin was made in 1.13+ or 1.12.2- would change the values stored.

The Bonge team will not break the rules of Java, therefore we needed to modify this file to only include the 1.13+ blocks, however, this lead to the idea of "hey we are changing it anyway, why don't we change it even further" so we removed the enum list completely and replaced it with a "dynamic class" (need to be a class as some plugins check if the list is a class, which enum's are). This allows us to provide extra materials that were not provided in the original list which includes the blocks and items found in Forge, resulting in Bukkit plugins interacting with modded blocks and items like the blocks and items were added in a Minecraft update.

Metrics

We do not collect any data from Bonge itself, if we were to collect data you would need to opt-in to give us data. We believe that your server data is something that you should control therefore we will only collect data that we need to and no other data. Currently, we do not need any data that your server would provide.

We do keep tabs on the "Issues" page as well as the compatibility list form for plugins that we need to work on for greater compatibility. The more often we see a plugin submitted by different users, the more we know how much it is in demand in which we will work on attempting to handle compatibility. Please also note that if the plugin does not have its code to share and/or it's a paid-for plugin then we are likely to work on other plugins as typically with emulation, you fix one issue, it increases the compatibility percent.