Implements configuration for common configuration values
Makes "enabled", marker set id, marker set priority, hide markers by default and marker set name configurable for all trait handlers. Makes "displayMinstrelSongs" configurable for minstrels
This commit is contained in:
@ -3,6 +3,7 @@ package net.knarcraft.dynmapcitizens.handler.trait;
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.knarcraft.dynmapcitizens.DynmapCitizens;
|
||||
import net.knarcraft.dynmapcitizens.settings.TraitSettings;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
@ -20,12 +21,27 @@ import java.util.logging.Level;
|
||||
public abstract class AbstractTraitHandler implements CitizensTraitHandler {
|
||||
|
||||
protected boolean isEnabled = false;
|
||||
protected MarkerSet markerSet;
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return isEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes this trait's marker set
|
||||
*/
|
||||
protected void initializeMarkerSet() {
|
||||
TraitSettings settings = getSettings();
|
||||
DynmapAPI dynmapAPI = DynmapCitizens.getInstance().getDynmapAPI();
|
||||
markerSet = getMarkerSet(dynmapAPI, settings.getMarkerSetId(), settings.getMarkerSetName());
|
||||
if (markerSet != null) {
|
||||
markerSet.setHideByDefault(settings.markersHiddenByDefault());
|
||||
markerSet.setLayerPriority(settings.getMarkerSetPriority());
|
||||
isEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the given marker set (and creates it if necessary)
|
||||
*
|
||||
@ -84,8 +100,8 @@ public abstract class AbstractTraitHandler implements CitizensTraitHandler {
|
||||
if (marker != null && isMoving(npc)) {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(DynmapCitizens.getInstance(),
|
||||
() -> marker.setLocation(npcLocation.getWorld().getName(), npc.getStoredLocation().getX(),
|
||||
npc.getStoredLocation().getY(), npc.getStoredLocation().getZ()), 20, 10 * 20);
|
||||
//TODO: Make the update rate configurable
|
||||
npc.getStoredLocation().getY(), npc.getStoredLocation().getZ()), 20,
|
||||
DynmapCitizens.getInstance().getGlobalSettings().getUpdateMovingNPCDelay() * 20);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,11 +8,11 @@ import net.knarcraft.blacksmith.config.NPCSettings;
|
||||
import net.knarcraft.blacksmith.trait.BlacksmithTrait;
|
||||
import net.knarcraft.dynmapcitizens.DynmapCitizens;
|
||||
import net.knarcraft.dynmapcitizens.property.Icon;
|
||||
import net.knarcraft.dynmapcitizens.settings.BlacksmithSettings;
|
||||
import net.knarcraft.dynmapcitizens.settings.TraitSettings;
|
||||
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;
|
||||
@ -23,28 +23,27 @@ import java.util.logging.Level;
|
||||
*/
|
||||
public class BlacksmithHandler extends AbstractTraitHandler {
|
||||
|
||||
private MarkerSet blacksmithSet;
|
||||
private final BlacksmithSettings settings = new BlacksmithSettings();
|
||||
|
||||
@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);
|
||||
blacksmithSet.setLayerPriority(3);
|
||||
isEnabled = true;
|
||||
return;
|
||||
}
|
||||
super.initializeMarkerSet();
|
||||
} else {
|
||||
super.isEnabled = false;
|
||||
}
|
||||
isEnabled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraitSettings getSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMarkers() {
|
||||
//Remove existing markers
|
||||
blacksmithSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
super.markerSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
|
||||
Class<? extends Trait> blacksmithTrait = CitizensAPI.getTraitFactory().getTraitClass("blacksmith");
|
||||
for (NPC npc : CitizensAPI.getNPCRegistry()) {
|
||||
@ -58,7 +57,7 @@ public class BlacksmithHandler extends AbstractTraitHandler {
|
||||
description = getDetailedBlacksmithInfo(npc, trait.getSettings());
|
||||
}
|
||||
addNPCMarker(npc.getUniqueId(), "Blacksmith NPC: ", description,
|
||||
DynmapCitizens.getInstance().getMarkerIcons().get(Icon.BLACKSMITH), blacksmithSet);
|
||||
DynmapCitizens.getInstance().getGlobalSettings().getMarkerIcons().get(Icon.BLACKSMITH), super.markerSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package net.knarcraft.dynmapcitizens.handler.trait;
|
||||
|
||||
import net.knarcraft.dynmapcitizens.settings.TraitSettings;
|
||||
|
||||
/**
|
||||
* A handler which takes care of everything for one citizen trait
|
||||
*/
|
||||
@ -17,6 +19,13 @@ public interface CitizensTraitHandler {
|
||||
*/
|
||||
boolean isEnabled();
|
||||
|
||||
/**
|
||||
* Gets the settings set for this trait
|
||||
*
|
||||
* @return <p>The settings for this trait</p>
|
||||
*/
|
||||
TraitSettings getSettings();
|
||||
|
||||
/**
|
||||
* Updates all markers used for this handler
|
||||
*/
|
||||
|
@ -5,13 +5,13 @@ 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.DynmapAPI;
|
||||
import org.dynmap.markers.GenericMarker;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
@ -20,28 +20,27 @@ import java.util.logging.Level;
|
||||
*/
|
||||
public class MinstrelHandler extends AbstractTraitHandler {
|
||||
|
||||
private MarkerSet minstrelSet;
|
||||
private final MinstrelSettings settings = new MinstrelSettings();
|
||||
|
||||
@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;
|
||||
}
|
||||
super.initializeMarkerSet();
|
||||
} else {
|
||||
super.isEnabled = false;
|
||||
}
|
||||
isEnabled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraitSettings getSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMarkers() {
|
||||
//Remove existing markers
|
||||
minstrelSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
super.markerSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
|
||||
Class<? extends Trait> minstrelTrait = CitizensAPI.getTraitFactory().getTraitClass("minstrel");
|
||||
for (NPC npc : CitizensAPI.getNPCRegistry()) {
|
||||
@ -54,7 +53,7 @@ public class MinstrelHandler extends AbstractTraitHandler {
|
||||
description = getDetailedMinstrelInfo(npc, trait);
|
||||
}
|
||||
addNPCMarker(npc.getUniqueId(), "Minstrel NPC: ", description,
|
||||
DynmapCitizens.getInstance().getMarkerIcons().get(Icon.MINSTREL), minstrelSet);
|
||||
DynmapCitizens.getInstance().getGlobalSettings().getMarkerIcons().get(Icon.MINSTREL), super.markerSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,11 +67,14 @@ public class MinstrelHandler extends AbstractTraitHandler {
|
||||
*/
|
||||
private String getDetailedMinstrelInfo(NPC npc, MinstrelTrait trait) {
|
||||
StringBuilder info = new StringBuilder("<h2>" + npc.getName() + "</h2>");
|
||||
info.append("<b>Songs:</b><ul>");
|
||||
for (Song song : trait.getPlaylist().getSongs()) {
|
||||
info.append("<li>Category: ").append(song.getCategory()).append("<br>Sound: ").append(song.getSound()).append("</li>");
|
||||
if (this.settings.displayMinstrelSongs()) {
|
||||
info.append("<b>Songs:</b><ul>");
|
||||
for (Song song : trait.getPlaylist().getSongs()) {
|
||||
info.append("<li>Category: ").append(song.getCategory()).append("<br>Sound: ").append(song.getSound());
|
||||
info.append("</li>");
|
||||
}
|
||||
info.append("</ul>");
|
||||
}
|
||||
info.append("</ul>");
|
||||
return info.toString();
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,10 @@ 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.SentinelSettings;
|
||||
import net.knarcraft.dynmapcitizens.settings.TraitSettings;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.dynmap.DynmapAPI;
|
||||
import org.dynmap.markers.GenericMarker;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
import org.mcmonkey.sentinel.SentinelPlugin;
|
||||
import org.mcmonkey.sentinel.SentinelTrait;
|
||||
|
||||
@ -17,27 +17,26 @@ import org.mcmonkey.sentinel.SentinelTrait;
|
||||
*/
|
||||
public class SentinelHandler extends AbstractTraitHandler {
|
||||
|
||||
private MarkerSet sentinelSet;
|
||||
protected final SentinelSettings settings = new SentinelSettings();
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
SentinelPlugin sentinelPlugin = (SentinelPlugin) Bukkit.getServer().getPluginManager().getPlugin("Sentinel");
|
||||
DynmapAPI dynmapAPI = DynmapCitizens.getInstance().getDynmapAPI();
|
||||
if (sentinelPlugin != null) {
|
||||
sentinelSet = getMarkerSet(dynmapAPI, "sentinels", "Sentinels");
|
||||
if (sentinelSet != null) {
|
||||
sentinelSet.setHideByDefault(false);
|
||||
sentinelSet.setLayerPriority(1);
|
||||
isEnabled = true;
|
||||
return;
|
||||
}
|
||||
super.initializeMarkerSet();
|
||||
} else {
|
||||
super.isEnabled = false;
|
||||
}
|
||||
isEnabled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraitSettings getSettings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMarkers() {
|
||||
sentinelSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
super.markerSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
|
||||
Class<? extends Trait> sentinelTrait = CitizensAPI.getTraitFactory().getTraitClass("sentinel");
|
||||
for (NPC npc : CitizensAPI.getNPCRegistry()) {
|
||||
@ -54,7 +53,7 @@ public class SentinelHandler extends AbstractTraitHandler {
|
||||
description += "<br><b>Targets:</b> " + trait.allTargets.toAllInOneString() + "<br><b>Avoids:</b> " +
|
||||
trait.allAvoids.toAllInOneString() + "<br><b>Ignores:</b> " + trait.allIgnores.toAllInOneString();
|
||||
addNPCMarker(npc.getUniqueId(), "Sentinel NPC: ", description,
|
||||
DynmapCitizens.getInstance().getMarkerIcons().get(Icon.SENTINEL), sentinelSet);
|
||||
DynmapCitizens.getInstance().getGlobalSettings().getMarkerIcons().get(Icon.SENTINEL), super.markerSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ import net.citizensnpcs.api.npc.NPCRegistry;
|
||||
import net.knarcraft.dynmapcitizens.DynmapCitizens;
|
||||
import net.knarcraft.dynmapcitizens.handler.trait.AbstractTraitHandler;
|
||||
import net.knarcraft.dynmapcitizens.property.Icon;
|
||||
import net.knarcraft.dynmapcitizens.settings.QuestsSettings;
|
||||
import net.knarcraft.dynmapcitizens.settings.TraitSettings;
|
||||
import net.knarcraft.dynmapcitizens.util.QuestsHelper;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -33,31 +35,33 @@ import java.util.logging.Level;
|
||||
public class QuestsHandler extends AbstractTraitHandler {
|
||||
|
||||
private QuestsAPI questsAPI;
|
||||
private MarkerSet questMarkerSet;
|
||||
private MarkerSet questAreaMarkerSet;
|
||||
private Map<Icon, MarkerIcon> markerIcons;
|
||||
private Map<UUID, NPCQuestInfo> questGiverInfo;
|
||||
private final QuestsSettings settings = new QuestsSettings();
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
questsAPI = (QuestsAPI) Bukkit.getServer().getPluginManager().getPlugin("Quests");
|
||||
DynmapAPI dynmapAPI = DynmapCitizens.getInstance().getDynmapAPI();
|
||||
markerIcons = DynmapCitizens.getInstance().getMarkerIcons();
|
||||
markerIcons = DynmapCitizens.getInstance().getGlobalSettings().getMarkerIcons();
|
||||
if (questsAPI != null) {
|
||||
questMarkerSet = getMarkerSet(dynmapAPI, "quests", "Quests");
|
||||
super.initializeMarkerSet();
|
||||
questAreaMarkerSet = getMarkerSet(dynmapAPI, "quest_areas", "Quest areas");
|
||||
if (questMarkerSet != null && questAreaMarkerSet != null) {
|
||||
questMarkerSet.setHideByDefault(false);
|
||||
if (questAreaMarkerSet != null) {
|
||||
questAreaMarkerSet.setHideByDefault(true);
|
||||
questMarkerSet.setLayerPriority(3);
|
||||
questAreaMarkerSet.setLayerPriority(2);
|
||||
isEnabled = true;
|
||||
//Remove old quest markers
|
||||
questMarkerSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
return;
|
||||
super.markerSet.getMarkers().forEach(GenericMarker::deleteMarker);
|
||||
}
|
||||
} else {
|
||||
isEnabled = false;
|
||||
}
|
||||
isEnabled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraitSettings getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -73,7 +77,7 @@ public class QuestsHandler extends AbstractTraitHandler {
|
||||
generateQuestNPCInfo();
|
||||
|
||||
//Remove any markers for deleted quests
|
||||
for (Marker marker : questMarkerSet.getMarkers()) {
|
||||
for (Marker marker : super.markerSet.getMarkers()) {
|
||||
if (!questGiverInfo.containsKey(UUID.fromString(marker.getMarkerID()))) {
|
||||
marker.deleteMarker();
|
||||
}
|
||||
@ -137,14 +141,14 @@ public class QuestsHandler extends AbstractTraitHandler {
|
||||
|
||||
markerDescription.append(getInvolvedInQuestsString(info));
|
||||
|
||||
Marker existingMarker = questMarkerSet.findMarker(npcId.toString());
|
||||
Marker existingMarker = super.markerSet.findMarker(npcId.toString());
|
||||
String newDescription = markerDescription.toString();
|
||||
if (existingMarker != null) {
|
||||
if (!existingMarker.getDescription().equals(newDescription)) {
|
||||
existingMarker.setDescription(newDescription);
|
||||
}
|
||||
} else {
|
||||
addNPCMarker(npcId, QuestsHelper.getMarkerTitle(info.getQuestNPCType()), newDescription, icon, questMarkerSet);
|
||||
addNPCMarker(npcId, QuestsHelper.getMarkerTitle(info.getQuestNPCType()), newDescription, icon, super.markerSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user