Skip to content

Latest commit

 

History

History
executable file
·
125 lines (99 loc) · 4.35 KB

README.md

File metadata and controls

executable file
·
125 lines (99 loc) · 4.35 KB

VexelCore

VexelCore is an API that enables Bukkit derivative (i.e. Paper, Purpur, etc.) and Velocity plugin developers to focus on features and offload complexity.

🔥 Why It's Awesome

  • Includes feature management system to simplify disabling/enabling/reloading
  • Features reliable utilities to simplify code and speed up development
  • Necessitates standards of format in configuration files for end user simplicity
  • Has two editions (meant for Bukkit and Velocity setups respectively) that share a common utils
  • Is targeted at the latest versions of Minecraft
  • Is developed with the community

🕹 ️Features

The VexelCore API has utilities, managers, etc. for Bukkit-based and Velocity-based Minecraft server software platforms. "Common" features are shared by both.

Common

  • Feature management system Features are groups of related commands and listeners.
    • On the fly disabling, enabling, and reloading of commands and listeners
  • You're likely to interact with it exclusively through the platform Feature Manager reload() method.

Main class example:

this.bukkitFeatureManager = new BukkitFeatureManager();
bukkitFeatureManager.register(new CoolFeature(instance));
bukkitFeatureManager.reload();

CoolFeature class example:

public class CoolFeature extends BukkitFeature {

  public CoolFeature(JavaPlugin instance) {
    super("cool", "Cool description", null, instance);
    registerCommand(new CoolCommand(instance));
  }
}

TIP: Remember to call bukkitFeatureManager.reload() in your plugin's onEnable() method to enable the features.

  • Command Helper Helps track arguments. Planning to add type and regex validation.

Example:

CMDHelper cmdHelper = new CMDHelper(args);
if (cmdHelper.argExists(0)) {
  Player target = Bukkit.getPlayer(args[0]);
  if (target == null) {
    new BukkitMsgBuilder("&cThat player is offline!").send(player);
  return;
  }
  target.sendMessage(new BukkitMsgBuilder("&7Hello!").get());
}
  • BoostedYAML Config Utility
    • Easily write, save, and reload BoostedYAML configs.
  • Icons Set of useful icons.

and more.

Bukkit

  • Custom command class (will eventually work for Velocity too) A command registered with the feature manager.
    • Automatically creates help page (@Override help() to customize)
    • Automatic tab completion of subcommands and additional completions (@Override getAdditionalCompletions()).
  • Menu System (WIP)
    • Pages
    • Right and left click actions
    • Prevents players from taking the item
  • Message Builder Easily create messages that automatically transform color codes (ex. &7) to
  • Utilities Various useful utilities

and more.

Velocity

Not much has been done with Velocity as the current focus is on Bukkit. This will change sometime soon.

📝 Planned Features

  • Localization//i18n system
  • MySQL database manager
  • And more

⌨️ Developers

The following developer documentation is a WIP.

Importing

VexelCore is currently a massive work-in-progress that is changing weekly. Please obtain the latest Bukkit or Velocity edition and add it to your project build configuration.

Gradle example:

compileOnly files('/home/martin/GitHub/VexelCore/bukkit/build/libs/VexelCore-Bukkit-1.0.1-SNAPSHOT.jar')

Note: This will change once the API is ready for an official 1.0 release.

Dependency Reminder

Don't forget to make "VexelCore" a dependency for your project's plugin platform dependency management system.

Contribute

All contributions are appreciated, but the project desperately needs more documentation.

IMPORTANT: If using Intellij, by default, it'll download the wrong JDK. If you are unable to build the project, please try Java 17 Temurin. We are targeting Java 17 to copy Minecraft.

✋ Help

Please join Martin's Community Discord server.

⚖️ License

VexelCore is currently licensed under the GNU General Public License v3.0

📦 Dependencies

VexelCore aims to not shade dependencies. The Bukkit edition handles dependencies through the plugin.yml but the Velocity edition is undecided.

This project utilizes the following dependencies: