package net.knarcraft.dynmapcitizens.trait;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.trait.Trait;
import net.knarcraft.blacksmith.BlacksmithPlugin;
import net.knarcraft.blacksmith.config.NPCSettings;
import net.knarcraft.blacksmith.trait.BlacksmithTrait;
import net.knarcraft.dynmapcitizens.DynmapCitizens;
import net.knarcraft.dynmapcitizens.Icon;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.dynmap.DynmapAPI;
import org.dynmap.markers.GenericMarker;
import org.dynmap.markers.MarkerSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
/**
* A handler class for the blacksmith trait
*/
public class BlacksmithHandler extends AbstractTraitHandler {
private MarkerSet blacksmithSet;
@Override
public void initialize() {
BlacksmithPlugin blacksmithPlugin = (BlacksmithPlugin) Bukkit.getServer().getPluginManager().getPlugin("Blacksmith");
DynmapAPI dynmapAPI = DynmapCitizens.getInstance().getDynmapAPI();
if (blacksmithPlugin != null) {
blacksmithSet = getMarkerSet(dynmapAPI, "blacksmiths", "Blacksmiths");
if (blacksmithSet != null) {
blacksmithSet.setHideByDefault(false);
isEnabled = true;
return;
}
}
isEnabled = false;
}
@Override
public void updateMarkers() {
//Remove existing markers
blacksmithSet.getMarkers().forEach(GenericMarker::deleteMarker);
Class extends Trait> blacksmithTrait = CitizensAPI.getTraitFactory().getTraitClass("blacksmith");
for (NPC npc : CitizensAPI.getNPCRegistry()) {
if (npc.hasTrait(blacksmithTrait)) {
BlacksmithTrait trait = CitizensAPI.getTraitFactory().getTrait("blacksmith");
String description = null;
if (trait == null) {
DynmapCitizens.getInstance().getLogger().log(Level.WARNING, "Unable to get blacksmith trait");
} else {
NPCSettings npcSettings = trait.getSettings();
//TODO: Make a setting which allows disabling extra information (except title and reforge-able items?)
description = "Blacksmith name: " + npc.getName() + "
Blacksmith title: " +
npcSettings.getBlacksmithTitle() + "
Fail chance: " + npcSettings.getFailChance() +
"
Enchantment chance: " + npcSettings.getExtraEnchantmentChance() +
"
Reforge-able items: " + getReforgeAbleItemsString(npcSettings.getReforgeAbleItems());
}
addNPCMarker(npc.getUniqueId(), "Blacksmith NPC: ", description,
DynmapCitizens.getInstance().getMarkerIcons().get(Icon.BLACKSMITH), blacksmithSet);
}
}
}
/**
* Gets reforge-able items as a string
*
* @param materials
The materials specified as reforge-able items
* @returnThe reforge-able items
*/ private static String getReforgeAbleItemsString(List