Spigot Plugin
BossConfiguratorPlugin
Make me a custom boss system that you can choose what name, what mob, how much damage, how much health, what weapons and armor and what loot it drops with a chance percentage each item and make the boss spawn at a set interval time and make all of this configurable using a gui and commandsgbbb
src/main/java/eu/codexe/bossconfigurator/BossConfiguratorPlugin.java
package eu.codexe.bossconfigurator;
import eu.codexe.bossconfigurator.commands.BossCommand;
import eu.codexe.bossconfigurator.gui.BossListGui;
import eu.codexe.bossconfigurator.listeners.BossDeathListener;
import eu.codexe.bossconfigurator.listeners.BossSpawnListener;
import eu.codexe.bossconfigurator.managers.BossManager;
import eu.codexe.bossconfigurator.storage.BossStorage;
import eu.codexe.bossconfigurator.storage.YamlBossStorage;
import eu.codexe.bossconfigurator.utils.MessageUtil;
import eu.codexe.bossconfigurator.utils.PluginConfig;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
public final class BossConfiguratorPlugin extends JavaPlugin {
private PluginConfig pluginConfig;
private MessageUtil messageUtil;
private BossStorage storage;
private BossManager bossManager;
private BossListGui bossListGui;
@Override
public void onEnable() {
saveDefaultConfig();
this.pluginConfig = new PluginConfig(this);
this.messageUtil = new MessageUtil(this, pluginConfig);
this.storage = new YamlBossStorage(this, pluginConfig);
this.bossManager = new BossManager(this, pluginConfig, messageUtil, storage);
this.bossListGui = new BossListGui(this, bossManager, messageUtil);
storage.loadAll();
bossManager.loadScheduledBosses();
Bukkit.getPluginManager().registerEvents(new BossDeathListener(this, bossManager, messageUtil), this);
Bukkit.getPluginManager().registerEvents(new BossSpawnListener(this, bossManager), this);
Bukkit.getPluginManager().registerEvents(bossListGui, this);
PluginCommand command = Objects.requireNonNull(getCommand("boss"), "boss command missing from plugin.yml");
BossCommand bossCommand = new BossCommand(this, bossManager, pluginConfig, messageUtil, bossListGui);
command.setExecutor(bossCommand);
command.setTabCompleter(bossCommand);
}
@Override
public void onDisable() {
if (bossManager != null) {
bossManager.shutdown();
}
if (storage != null) {
storage.saveAll();
}
}
public PluginConfig getPluginConfigWrapper() {
return pluginConfig;