Adds minstrel markers
This commit is contained in:
parent
eabcffe878
commit
ce042fe3ec
6
pom.xml
6
pom.xml
@ -120,6 +120,12 @@
|
||||
<version>1.0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.knarcraft</groupId>
|
||||
<artifactId>minstrel</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mcmonkey</groupId>
|
||||
<artifactId>sentinel</artifactId>
|
||||
|
@ -2,6 +2,7 @@ package net.knarcraft.dynmapcitizens;
|
||||
|
||||
import net.knarcraft.dynmapcitizens.trait.BlacksmithHandler;
|
||||
import net.knarcraft.dynmapcitizens.trait.CitizensTraitHandler;
|
||||
import net.knarcraft.dynmapcitizens.trait.MinstrelHandler;
|
||||
import net.knarcraft.dynmapcitizens.trait.SentinelHandler;
|
||||
import net.knarcraft.dynmapcitizens.trait.quests.QuestsHandler;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -47,6 +48,7 @@ public final class DynmapCitizens extends JavaPlugin {
|
||||
handlers.add(new BlacksmithHandler());
|
||||
handlers.add(new QuestsHandler());
|
||||
handlers.add(new SentinelHandler());
|
||||
handlers.add(new MinstrelHandler());
|
||||
for (CitizensTraitHandler handler : handlers) {
|
||||
handler.initialize();
|
||||
}
|
||||
@ -115,6 +117,7 @@ public final class DynmapCitizens extends JavaPlugin {
|
||||
markerIcons.put(Icon.BLACKSMITH, markerAPI.getMarkerIcon("hammer"));
|
||||
markerIcons.put(Icon.SENTINEL, markerAPI.getMarkerIcon("shield"));
|
||||
markerIcons.put(Icon.QUEST_CHAIN, markerAPI.getMarkerIcon("caution"));
|
||||
markerIcons.put(Icon.MINSTREL, markerAPI.getMarkerIcon("theater"));
|
||||
this.markerIcons = markerIcons;
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,11 @@ public enum Icon {
|
||||
/**
|
||||
* An icon representing a blacksmith NPC
|
||||
*/
|
||||
BLACKSMITH
|
||||
BLACKSMITH,
|
||||
|
||||
/**
|
||||
* An icon representing a minstrel NPC
|
||||
*/
|
||||
MINSTREL
|
||||
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public class BlacksmithHandler extends AbstractTraitHandler {
|
||||
Class<? extends Trait> blacksmithTrait = CitizensAPI.getTraitFactory().getTraitClass("blacksmith");
|
||||
for (NPC npc : CitizensAPI.getNPCRegistry()) {
|
||||
if (npc.hasTrait(blacksmithTrait)) {
|
||||
BlacksmithTrait trait = CitizensAPI.getTraitFactory().getTrait("blacksmith");
|
||||
BlacksmithTrait trait = npc.getTraitNullable(BlacksmithTrait.class);
|
||||
String description = null;
|
||||
if (trait == null) {
|
||||
DynmapCitizens.getInstance().getLogger().log(Level.WARNING, "Unable to get blacksmith trait");
|
||||
|
@ -0,0 +1,85 @@
|
||||
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.dynmapcitizens.DynmapCitizens;
|
||||
import net.knarcraft.dynmapcitizens.Icon;
|
||||
import net.knarcraft.dynmapcitizens.UpdateRate;
|
||||
import net.knarcraft.minstrel.MinstrelPlugin;
|
||||
import net.knarcraft.minstrel.music.Song;
|
||||
import net.knarcraft.minstrel.trait.MinstrelTrait;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.dynmap.DynmapAPI;
|
||||
import org.dynmap.markers.GenericMarker;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
/**
|
||||
* A handler class for the minstrel trait
|
||||
*/
|
||||
public class MinstrelHandler extends AbstractTraitHandler {
|
||||
|
||||
private MarkerSet minstrelSet;
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
MinstrelPlugin minstrelPlugin = (MinstrelPlugin) Bukkit.getServer().getPluginManager().getPlugin("Minstrel");
|
||||
DynmapAPI dynmapAPI = DynmapCitizens.getInstance().getDynmapAPI();
|
||||
if (minstrelPlugin != null) {
|
||||
minstrelSet = getMarkerSet(dynmapAPI, "minstrels", "Minstrels");
|
||||
if (minstrelSet != null) {
|
||||
minstrelSet.setHideByDefault(false);
|
||||
minstrelSet.setLayerPriority(3);
|
||||
isEnabled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
isEnabled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UpdateRate getUpdateRate() {
|
||||
return UpdateRate.VERY_SLOW;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMarkers() {
|
||||
//Remove existing markers
|
||||
minstrelSet.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 = null;
|
||||
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().getMarkerIcons().get(Icon.MINSTREL), minstrelSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets detailed information about a minstrel NPC
|
||||
*
|
||||
* @param npc <p>The NPC the settings belong to</p>
|
||||
* @param trait <p>The minstrel trait to get information from</p>
|
||||
* @return <p>A string describing the minstrel</p>
|
||||
*/
|
||||
private String getDetailedMinstrelInfo(NPC npc, MinstrelTrait trait) {
|
||||
StringBuilder info = new StringBuilder("<b>Minstrel name:</b> " + npc.getName());
|
||||
info.append("<br><b>Songs:</b><ul>");
|
||||
for (Song song : trait.getPlaylist().getSongs()) {
|
||||
info.append("<li>Category: ").append(song.getCategory()).append(" Sound: ").append(song.getSound()).append("</li>");
|
||||
}
|
||||
info.append("</ul>");
|
||||
return info.toString();
|
||||
}
|
||||
|
||||
}
|
@ -4,6 +4,6 @@ main: net.knarcraft.dynmapcitizens.DynmapCitizens
|
||||
api-version: 1.19
|
||||
prefix: DynmapCitizens
|
||||
depend: [ dynmap, Citizens ]
|
||||
softdepend: [ Blacksmith, Sentinel, Quests ]
|
||||
softdepend: [ Blacksmith, Sentinel, Quests, Minstrel ]
|
||||
authors: [ EpicKnarvik97 ]
|
||||
description: A plugin for displaying citizens info on the dynmap map
|
||||
|
Loading…
Reference in New Issue
Block a user