diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java index 86ada3742..a1d41e304 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcAvailabilityQuest.java @@ -29,25 +29,25 @@ public class SubGuiNpcAvailabilityQuest extends SubGuiInterface implements GuiSe getLabel(1).center(xSize); int y = guiTop + 12; - this.addButton(new GuiNpcButton(0, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive"},availabitily.questAvailable.ordinal())); + this.addButton(new GuiNpcButton(0, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive", "availability.acceptable", "availability.notacceptable"},availabitily.questAvailable.ordinal())); this.addButton(new GuiNpcButton(10, guiLeft + 96, y, 192, 20, "availability.selectquest")); getButton(10).setEnabled(availabitily.questAvailable != EnumAvailabilityQuest.Always); this.addButton(new GuiNpcButton(20, guiLeft + 290, y, 20, 20, "X")); y += 23; - this.addButton(new GuiNpcButton(1, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive"},availabitily.quest2Available.ordinal())); + this.addButton(new GuiNpcButton(1, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive", "availability.acceptable", "availability.notacceptable"},availabitily.quest2Available.ordinal())); this.addButton(new GuiNpcButton(11, guiLeft + 96, y, 192, 20, "availability.selectquest")); getButton(11).setEnabled(availabitily.quest2Available != EnumAvailabilityQuest.Always); this.addButton(new GuiNpcButton(21, guiLeft + 290, y, 20, 20, "X")); y += 23; - this.addButton(new GuiNpcButton(2, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive"},availabitily.quest3Available.ordinal())); + this.addButton(new GuiNpcButton(2, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive", "availability.acceptable", "availability.notacceptable"},availabitily.quest3Available.ordinal())); this.addButton(new GuiNpcButton(12, guiLeft + 96, y, 192, 20, "availability.selectquest")); getButton(12).setEnabled(availabitily.quest3Available != EnumAvailabilityQuest.Always); this.addButton(new GuiNpcButton(22, guiLeft + 290, y, 20, 20, "X")); y += 23; - this.addButton(new GuiNpcButton(3, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive"},availabitily.quest4Available.ordinal())); + this.addButton(new GuiNpcButton(3, guiLeft + 4, y, 90, 20, new String[]{"availability.always","availability.after","availability.before","availability.whenactive", "availability.whennotactive", "availability.acceptable", "availability.notacceptable"},availabitily.quest4Available.ordinal())); this.addButton(new GuiNpcButton(13, guiLeft + 96, y, 192, 20, "availability.selectquest")); getButton(13).setEnabled(availabitily.quest4Available != EnumAvailabilityQuest.Always); this.addButton(new GuiNpcButton(23, guiLeft + 290, y, 20, 20, "X")); diff --git a/src/main/java/noppes/npcs/constants/EnumAvailabilityQuest.java b/src/main/java/noppes/npcs/constants/EnumAvailabilityQuest.java index 3354560b2..c6f6ff6ec 100644 --- a/src/main/java/noppes/npcs/constants/EnumAvailabilityQuest.java +++ b/src/main/java/noppes/npcs/constants/EnumAvailabilityQuest.java @@ -1,5 +1,5 @@ package noppes.npcs.constants; public enum EnumAvailabilityQuest { - Always,After,Before,Active,NotActive + Always,After,Before,Active,NotActive,Acceptable,NotAcceptable } diff --git a/src/main/java/noppes/npcs/controllers/PlayerQuestController.java b/src/main/java/noppes/npcs/controllers/PlayerQuestController.java index 73e568d22..8a75bbcb1 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerQuestController.java +++ b/src/main/java/noppes/npcs/controllers/PlayerQuestController.java @@ -108,7 +108,11 @@ public class PlayerQuestController { if(quest == null) return false; - PlayerQuestData data = PlayerDataController.Instance.getPlayerData(player).questData; + PlayerData playerData = PlayerData.get(player); + if(playerData == null) + return false; + + PlayerQuestData data = playerData.questData; if(data.activeQuests.containsKey(quest.id)) return false; diff --git a/src/main/java/noppes/npcs/controllers/data/Availability.java b/src/main/java/noppes/npcs/controllers/data/Availability.java index 791eb8619..1b039d730 100644 --- a/src/main/java/noppes/npcs/controllers/data/Availability.java +++ b/src/main/java/noppes/npcs/controllers/data/Availability.java @@ -10,6 +10,7 @@ import noppes.npcs.api.handler.data.IAvailability; import noppes.npcs.constants.*; import noppes.npcs.controllers.FactionController; import noppes.npcs.controllers.PlayerQuestController; +import noppes.npcs.controllers.QuestController; import noppes.npcs.scripted.CustomNPCsException; public class Availability implements ICompatibilty, IAvailability { @@ -230,6 +231,13 @@ public class Availability implements ICompatibilty, IAvailability { return true; else if(en == EnumAvailabilityQuest.NotActive && !PlayerQuestController.isQuestActive(player, id)) return true; + else if(en == EnumAvailabilityQuest.Acceptable || en == EnumAvailabilityQuest.NotAcceptable){ + Quest quest = QuestController.Instance.quests.get(id); + if(quest == null) + return true; + boolean result = PlayerQuestController.canQuestBeAccepted(quest, player); + return (result && en == EnumAvailabilityQuest.Acceptable) || (!result && en == EnumAvailabilityQuest.NotAcceptable); + } return false; } @Override diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 5b3de0825..f16677ed9 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -302,6 +302,8 @@ availability.before=Before availability.available=Available availability.whenactive=When Active availability.whennotactive=When Not Active +availability.acceptable=Acceptable +availability.notacceptable=Not Acceptable availability.selectquest=Select Quest availability.selectdialog=Select Dialog availability.selectfaction=Select Faction