From 05df0509e12d96d3c7a1b5ce44e2207fb49af9cd Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 28 Feb 2025 18:31:59 -0500 Subject: [PATCH] Active Quest Requirement --- .../java/kamkeel/npcs/CustomAttributes.java | 2 + .../types/QuestActiveRequirement.java | 47 +++++++++++++++++++ .../assets/customnpcs/lang/en_US.lang | 1 + 3 files changed, 50 insertions(+) create mode 100644 src/main/java/kamkeel/npcs/controllers/data/attribute/requirement/types/QuestActiveRequirement.java diff --git a/src/main/java/kamkeel/npcs/CustomAttributes.java b/src/main/java/kamkeel/npcs/CustomAttributes.java index be11e1b6c..8623fb240 100644 --- a/src/main/java/kamkeel/npcs/CustomAttributes.java +++ b/src/main/java/kamkeel/npcs/CustomAttributes.java @@ -3,6 +3,7 @@ package kamkeel.npcs; import kamkeel.npcs.controllers.AttributeController; import kamkeel.npcs.controllers.data.attribute.AttributeDefinition; import kamkeel.npcs.controllers.data.attribute.AttributeValueType; +import kamkeel.npcs.controllers.data.attribute.requirement.types.QuestActiveRequirement; import kamkeel.npcs.controllers.data.attribute.requirement.types.QuestCompletedRequirement; import kamkeel.npcs.controllers.data.attribute.requirement.RequirementCheckerRegistry; @@ -58,5 +59,6 @@ public class CustomAttributes { // Requirement RequirementCheckerRegistry.registerChecker(new QuestCompletedRequirement()); + RequirementCheckerRegistry.registerChecker(new QuestActiveRequirement()); } } diff --git a/src/main/java/kamkeel/npcs/controllers/data/attribute/requirement/types/QuestActiveRequirement.java b/src/main/java/kamkeel/npcs/controllers/data/attribute/requirement/types/QuestActiveRequirement.java new file mode 100644 index 000000000..3edf40c94 --- /dev/null +++ b/src/main/java/kamkeel/npcs/controllers/data/attribute/requirement/types/QuestActiveRequirement.java @@ -0,0 +1,47 @@ +package kamkeel.npcs.controllers.data.attribute.requirement.types; + +import kamkeel.npcs.controllers.data.attribute.requirement.IRequirementChecker; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.data.PlayerData; + +public class QuestActiveRequirement implements IRequirementChecker { + + @Override + public String getKey() { + return "cnpc_quest_active"; + } + + @Override + public String getTranslation() { + return "quest.active"; + } + + @Override + public String getTooltipValue(NBTTagCompound nbt) { + if(nbt.hasKey(getKey())) { + int questID = nbt.getInteger(getKey()); + if(QuestController.Instance.get(questID) != null) { + return QuestController.Instance.get(questID).getName(); + } + } + return "null"; + } + + @Override + public void apply(NBTTagCompound nbt, Object value) { + if(value instanceof Integer) { + nbt.setInteger(getKey(), (Integer) value); + } + } + + @Override + public boolean check(EntityPlayer player, NBTTagCompound nbt) { + if(nbt.hasKey(getKey())) { + int questID = nbt.getInteger(getKey()); + return PlayerData.get(player).questData.hasActiveQuest(questID); + } + return true; + } +} diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 2e442b1aa..6be14a191 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -648,6 +648,7 @@ dialog.titleColor=Title Color dialog.titlePos=Title Position quest.quest=Quest +quest.active=Active Quest quest.quests=Quests quest.item=Item quest.kill=Kill