One codebase. Minecraft and Hytale.
The framework that lets you write a plugin once and ship it from Minecraft 1.7.10 to the newest releases, and to Hytale.
📖 Wiki • 🚀 Quick Start • ⬇️ Download • 📝 Changelog • 💬 Discord
| Your commands, configs, messages, screens and player data are written against an API that doesn't know which server it is on. The same class runs on Bukkit, Spigot, Paper, Forge hybrids and Hytale. | One jar covers Minecraft 1.7.10 through the year-based 26.x releases, including Forge hybrids like Crucible, Mohist and Arclight. Your server owners never ask "which build do I need?". | Thousands of unit tests, plus an in-server check-up that boots real Crucible, Mohist, Arclight, Paper and Hytale servers to check what only a live server can answer. |
| Flat files, MySQL/MariaDB, PostgreSQL, H2 or MongoDB, picked in a config file and moved live with one command. No recompiling, no migration scripts. Powered by EveryDatabase for storage and EveryConfig for commented YAML configs. | Regions and flags, quests, dialogues, shops, chest screens, economy, boosters, rankings, groups, cooldowns and more. These are the parts every server ends up rebuilding. | Annotated commands with typed arguments and tab-completion, configs that write their own comments, async player data, and a published test kit so you can test without a server. |
| Platform | Versions | Artifact | |
|---|---|---|---|
| ⛏️ | Bukkit · Spigot · Paper | 1.7.10 → 26.x | EverNifeCore-<version>.jar |
| 🔥 | Forge hybrids Crucible · Mohist · Arclight |
1.7.10 · 1.12.2 · 1.16.5 · 1.21.1 | EverNifeCore-<version>.jar |
| 🟧 | Hytale | latest server | EverNifeCore-<version>-Hytale.jar |
The Hytale port tracks the newest Hytale server and is under active development. Regions are already proven on a live server.
See Hytale Platform and Version Compatibility.
⌨️ A command: parsed, permission-checked, tab-completed, with help generated for you
@FinalCMD(aliases = {"greet", "hi"}, permission = "myplugin.greet")
public class GreetCommand {
@FinalCMD.SubCMD(subcmd = "bonus", permission = "myplugin.greet.bonus")
public void bonus(FCommandSender sender,
@Arg("<player>") FPlayer target,
@Arg("<amount>") Integer amount,
@Arg.Flag(value = "--silent", aliases = "-s") Boolean silent) {
// runs the same on Minecraft and Hytale
}
}🖼️ A screen: a chest GUI on Minecraft, a native page on Hytale
Screen<Layout> shop = Screen.of(3).title("§8Shop");
shop.icon(13, Icon.of("minecraft:diamond").displayName("§bBuy a diamond"))
.onClick(click -> click.getViewer().sendMessage("§aBought!"));
shop.open(player);🛡️ A protected region: flags that only cost something where a region uses them
arena.setFlag(CoreFlags.DENY_BLOCK_BREAK, Tristate.TRUE);
arena.setFlag(CoreFlags.GREETING, "§aWelcome to the arena");
arena.setFlag(CoreFlags.DENY_PVP, Tristate.FALSE, Duration.ofMinutes(5)); // a 5-minute PvP window📦 Player data: a plain class, saved wherever the admin points it
public class JobsSection extends PDSection {
public int level;
public void levelUp() {
level++;
markDirty(); // persisted on the next flush, on any backend
}
}
PlayerController.getPDSection(uuid, JobsSection.class).thenAccept(JobsSection::levelUp);🌐 A message in every language: server owners reword it without touching your jar
@FCLocale(lang = LocaleType.EN_US, text = "&aWelcome, ${player}&a!")
@FCLocale(lang = LocaleType.PT_BR, text = "&aBem-vindo, ${player}&a!")
public static LocaleMessage WELCOME;
WELCOME.addPlaceholder("player", player.getName()).send(player);|
Foundations
|
Gameplay building blocks |
That's it. Plugins built on EverNifeCore find it on their own. |
repositories {
maven { url = 'https://maven.petrus.dev/public' }
}
dependencies {
compileOnly 'br.com.finalcraft:evernifecore-minecraft:3.0.1'
}Then follow the Quick Start.
Hytale and the shared |
Every integration is optional and stays quiet when its plugin is missing.
Details on Integrations.
| EveryDatabase | the storage engine: entities, codecs, caching, backend drivers |
| EveryConfig | the Jackson-first YAML layer: typed reads, inline comments, async saves |
| EveryLibs | reflection, executor and collection helpers |
Building from source is just git clone and ./gradlew build. Every dependency comes from a public repository.
See Building from Source.
Discord • SpigotMC • Issues • Wiki
Developed with ❤️ by EverNife
Empowering Minecraft plugin development since 2016, and now Hytale too.
🌐 petrus.dev