package net.knarcraft.dynmapcitizens.handler.trait; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.trait.Trait; import net.knarcraft.dynmapcitizens.DynmapCitizens; import net.knarcraft.dynmapcitizens.property.Icon; import net.knarcraft.dynmapcitizens.settings.MinstrelSettings; import net.knarcraft.dynmapcitizens.settings.TraitSettings; import net.knarcraft.minstrel.MinstrelPlugin; import net.knarcraft.minstrel.music.Song; import net.knarcraft.minstrel.trait.MinstrelTrait; import org.bukkit.Bukkit; import org.dynmap.markers.GenericMarker; import org.jetbrains.annotations.NotNull; import java.util.logging.Level; /** * A handler class for the minstrel trait */ public class MinstrelHandler extends AbstractTraitHandler { private final MinstrelSettings settings = new MinstrelSettings(); @Override public void initialize() { MinstrelPlugin minstrelPlugin = (MinstrelPlugin) Bukkit.getServer().getPluginManager().getPlugin("Minstrel"); if (minstrelPlugin != null) { super.initializeMarkerSet(); } else { super.isEnabled = false; } } @Override public @NotNull TraitSettings getSettings() { return this.settings; } @Override public void updateMarkers() { //Remove existing markers super.markerSet.getMarkers().forEach(GenericMarker::deleteMarker); Class extends Trait> minstrelTrait = CitizensAPI.getTraitFactory().getTraitClass("minstrel"); for (NPC npc : CitizensAPI.getNPCRegistry()) { if (npc.hasTrait(minstrelTrait)) { MinstrelTrait trait = npc.getTraitNullable(MinstrelTrait.class); String description = ""; if (trait == null) { DynmapCitizens.getInstance().getLogger().log(Level.WARNING, "Unable to get minstrel trait"); } else { description = getDetailedMinstrelInfo(npc, trait); } addNPCMarker(npc.getUniqueId(), "Minstrel NPC: ", description, DynmapCitizens.getInstance().getGlobalSettings().getMarkerIcons().get(Icon.MINSTREL), super.markerSet); } } } /** * Gets detailed information about a minstrel NPC * * @param npc
The NPC the settings belong to
* @param traitThe minstrel trait to get information from
* @returnA string describing the minstrel
*/ private String getDetailedMinstrelInfo(NPC npc, MinstrelTrait trait) { StringBuilder info = new StringBuilder("