Minstrel/src/main/java/net/knarcraft/minstrel/MinstrelPlugin.java
EpicKnarvik97 a243b3fc77
All checks were successful
KnarCraft/Minstrel/pipeline/head This commit looks good
Schedules next song individually for each player #4
2023-08-26 02:56:14 +02:00

82 lines
2.4 KiB
Java

package net.knarcraft.minstrel;
import net.citizensnpcs.api.CitizensAPI;
import net.knarcraft.minstrel.command.MinstrelCommand;
import net.knarcraft.minstrel.command.MinstrelTabCompleter;
import net.knarcraft.minstrel.listener.MinstrelListener;
import net.knarcraft.minstrel.manager.QueueManager;
import net.knarcraft.minstrel.trait.MinstrelTrait;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.List;
/**
* The main class of this plugin
*/
public final class MinstrelPlugin extends JavaPlugin {
private static MinstrelPlugin instance;
private final List<MinstrelTrait> knownMinstrels = new ArrayList<>();
@Override
public void onEnable() {
// Plugin startup logic
instance = this;
//Register the blacksmith trait with Citizens
CitizensAPI.getTraitFactory().registerTrait(
net.citizensnpcs.api.trait.TraitInfo.create(MinstrelTrait.class).withName("minstrel"));
PluginManager pluginManager = Bukkit.getPluginManager();
pluginManager.registerEvents(new MinstrelListener(), this);
PluginCommand minstrelCommand = this.getCommand("minstrel");
if (minstrelCommand != null) {
minstrelCommand.setExecutor(new MinstrelCommand());
minstrelCommand.setTabCompleter(new MinstrelTabCompleter());
}
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, QueueManager::handleQueue, 20, 10);
}
@Override
public void onDisable() {
for (MinstrelTrait minstrelTrait : knownMinstrels) {
minstrelTrait.getPlaylist().stop();
}
}
/**
* Adds the given minstrel to the list of known minstrels
*
* @param minstrelTrait <p>The minstrel to add</p>
*/
public void addMinstrel(MinstrelTrait minstrelTrait) {
knownMinstrels.add(minstrelTrait);
}
/**
* Gets all currently known minstrels
*
* @return <p>All currently known minstrels</p>
*/
public List<MinstrelTrait> getMinstrels() {
return new ArrayList<>(knownMinstrels);
}
/**
* Gets an instance of this plugin
*
* @return <p>An instance of this plugin</p>
*/
public static MinstrelPlugin getInstance() {
return instance;
}
}