Spigot Plugin

StoneVampirePlugin

Wear it intact — you're just a person wearing a weird mask. The helmet breaks (durability hits 0, tracked via an advancement that fires on the exact break) → the curse permanently awakens. You become a Stone Vampire: permanent Night Vision, Speed IV, Strength V, faster regen at night — but you catch fire every tick you're standing in direct daylight, unless you're in water or have Fire Resistance. This is irreversible in this build, matching the "no going back" tone of the source.

src/main/java/eu/codexe/stonevampire/StoneVampirePlugin.java
package eu.codexe.stonevampire;

import eu.codexe.stonevampire.commands.StoneVampireCommand;
import eu.codexe.stonevampire.listeners.CurseBreakListener;
import eu.codexe.stonevampire.listeners.VampireEffectListener;
import eu.codexe.stonevampire.managers.CurseManager;
import eu.codexe.stonevampire.storage.StorageManager;
import eu.codexe.stonevampire.storage.YamlStorageManager;
import eu.codexe.stonevampire.utils.ConfigManager;
import eu.codexe.stonevampire.utils.MessageUtil;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Objects;

public final class StoneVampirePlugin extends JavaPlugin {

    private ConfigManager configManager;
    private MessageUtil messageUtil;
    private StorageManager storageManager;
    private CurseManager curseManager;

    @Override
    public void onEnable() {
        saveDefaultConfig();

        this.configManager = new ConfigManager(this);
        this.messageUtil = new MessageUtil(this, configManager);
        this.storageManager = new YamlStorageManager(this);
        this.curseManager = new CurseManager(this, configManager, messageUtil, storageManager);

        curseManager.loadAsync();

        registerCommand();
        registerListeners();

        getLogger().info("StoneVampirePlugin enabled.");
    }

    @Override
    public void onDisable() {
        if (curseManager != null) {
            curseManager.shutdown();
        }
        if (storageManager != null) {
            storageManager.saveAll();
        }
        getLogger().info("StoneVampirePlugin disabled.");
    }

    public void reloadPlugin() {
        reloadConfig();
        this.configManager.reload();
        this.messageUtil.reload();
        this.curseManager.reload();
    }

    public ConfigManager getConfigManager() {
        return configManager;
    }