mirror of
https://github.com/Zrips/Jobs.git
synced 2024-11-25 20:16:13 +01:00
Ingame quest editor first pass
This commit is contained in:
parent
d3570d395f
commit
2d71e67318
Binary file not shown.
579
src/main/java/com/gamingmesh/jobs/commands/list/editquests.java
Normal file
579
src/main/java/com/gamingmesh/jobs/commands/list/editquests.java
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
package com.gamingmesh.jobs.commands.list;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import com.gamingmesh.jobs.Jobs;
|
||||||
|
import com.gamingmesh.jobs.commands.Cmd;
|
||||||
|
import com.gamingmesh.jobs.commands.JobsCommands;
|
||||||
|
import com.gamingmesh.jobs.container.Job;
|
||||||
|
import com.gamingmesh.jobs.container.Quest;
|
||||||
|
import com.gamingmesh.jobs.container.QuestObjective;
|
||||||
|
|
||||||
|
import net.Zrips.CMILib.Chat.ChatEditorObject;
|
||||||
|
import net.Zrips.CMILib.Chat.ChatMessageEdit;
|
||||||
|
import net.Zrips.CMILib.Chat.ChatMessageListEdit;
|
||||||
|
import net.Zrips.CMILib.Chat.ChatMessageListEdit.ChatEditType;
|
||||||
|
import net.Zrips.CMILib.Chat.ChatMessageObjectEdit;
|
||||||
|
import net.Zrips.CMILib.Colors.CMIChatColor;
|
||||||
|
import net.Zrips.CMILib.Container.CMINumber;
|
||||||
|
import net.Zrips.CMILib.Container.CMIText;
|
||||||
|
import net.Zrips.CMILib.Container.PageInfo;
|
||||||
|
import net.Zrips.CMILib.FileHandler.ConfigReader;
|
||||||
|
import net.Zrips.CMILib.Locale.LC;
|
||||||
|
import net.Zrips.CMILib.RawMessages.RawMessage;
|
||||||
|
import net.Zrips.CMILib.RawMessages.RawMessageCommand;
|
||||||
|
|
||||||
|
public class editquests implements Cmd {
|
||||||
|
|
||||||
|
private enum Action {
|
||||||
|
update, editline, moveup, movedown, createnew, addline, info, deleteLine, gui, list, delete, editCommands;
|
||||||
|
|
||||||
|
public static Action getByName(String name) {
|
||||||
|
if (name.equalsIgnoreCase("new"))
|
||||||
|
return Action.createnew;
|
||||||
|
for (Action one : Action.values()) {
|
||||||
|
if (one.name().equalsIgnoreCase(name))
|
||||||
|
return one;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap<String, Quest> tempQuests = new HashMap<String, Quest>();
|
||||||
|
HashMap<String, List<String>> tempObjectives = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean perform(Jobs plugin, final CommandSender sender, String[] args) {
|
||||||
|
|
||||||
|
int page = 0;
|
||||||
|
|
||||||
|
Action action = null;
|
||||||
|
|
||||||
|
for (String one : args) {
|
||||||
|
if (page == 0) {
|
||||||
|
try {
|
||||||
|
page = Integer.parseInt(one);
|
||||||
|
continue;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action == null) {
|
||||||
|
action = Action.getByName(one);
|
||||||
|
if (action != null)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action == null)
|
||||||
|
action = Action.list;
|
||||||
|
|
||||||
|
tempObjectives.remove(sender.getName());
|
||||||
|
tempQuests.remove(sender.getName());
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
case list:
|
||||||
|
Set<Quest> quests = new LinkedHashSet<Quest>();
|
||||||
|
for (Job job : Jobs.getJobs()) {
|
||||||
|
quests.addAll(job.getQuests());
|
||||||
|
}
|
||||||
|
|
||||||
|
PageInfo pi = new PageInfo(10, quests.size(), page);
|
||||||
|
ChatMessageObjectEdit CMOE = new ChatMessageObjectEdit(sender, pi) {
|
||||||
|
@Override
|
||||||
|
public void newAdd(String message) {
|
||||||
|
Quest q = new Quest(message, null);
|
||||||
|
tempQuests.put(sender.getName(), q);
|
||||||
|
mainWindow(sender, q);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
for (Quest quest : quests) {
|
||||||
|
if (!pi.isEntryOk())
|
||||||
|
continue;
|
||||||
|
ChatEditorObject CEO = new ChatEditorObject(Jobs.getLanguage().getMessage("command.editquests.help.output.list", "[jobName]", quest.getJob()
|
||||||
|
.getDisplayName(), "[questName]", quest.getQuestName())) {
|
||||||
|
@Override
|
||||||
|
public void onDelete() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
CEO.setHover(LC.modify_editSymbolHover.getLocale("[text]", quest.getQuestName()));
|
||||||
|
CMOE.addline(CEO);
|
||||||
|
}
|
||||||
|
CMOE.print();
|
||||||
|
pi.autoPagination(sender, JobsCommands.LABEL + " " + editquests.class.getSimpleName());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getRecords(Quest quest, String section) {
|
||||||
|
List<String> objectives = new ArrayList<String>();
|
||||||
|
|
||||||
|
if (quest.getJob() == null)
|
||||||
|
return objectives;
|
||||||
|
|
||||||
|
try {
|
||||||
|
File folder = new File(Jobs.getInstance().getDataFolder(), "jobs");
|
||||||
|
if (folder.isDirectory()) {
|
||||||
|
File directFile = new File(folder, quest.getJob().getName().toLowerCase() + ".yml");
|
||||||
|
if (directFile.isFile()) {
|
||||||
|
ConfigReader cfg = new ConfigReader(directFile);
|
||||||
|
if (cfg.getC().isConfigurationSection(quest.getJob().getName()) && (cfg.getC().isConfigurationSection(quest.getJob().getName() + ".Quests." + quest.getConfigName()))) {
|
||||||
|
objectives = cfg.getC().getStringList(quest.getJob().getName() + ".Quests." + quest.getConfigName() + "." + section);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (objectives.isEmpty()) {
|
||||||
|
for (File file : folder.listFiles()) {
|
||||||
|
ConfigReader cfg = new ConfigReader(file);
|
||||||
|
if (!cfg.getC().isConfigurationSection(quest.getJob().getName()))
|
||||||
|
continue;
|
||||||
|
if (cfg.getC().isConfigurationSection(quest.getJob().getName() + ".Quests." + quest.getConfigName())) {
|
||||||
|
objectives = cfg.getC().getStringList(quest.getJob().getName() + ".Quests." + quest.getConfigName() + "." + section);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return objectives;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ConfigReader getQuestConfig(String jobName) {
|
||||||
|
|
||||||
|
ConfigReader cfg = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
File folder = new File(Jobs.getInstance().getDataFolder(), "jobs");
|
||||||
|
if (folder.isDirectory()) {
|
||||||
|
File directFile = new File(folder, jobName.toLowerCase() + ".yml");
|
||||||
|
if (directFile.isFile()) {
|
||||||
|
ConfigReader cf = new ConfigReader(directFile);
|
||||||
|
if (cf.getC().isConfigurationSection(jobName)) {
|
||||||
|
cfg = cf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cfg == null) {
|
||||||
|
for (File file : folder.listFiles()) {
|
||||||
|
ConfigReader cf = new ConfigReader(file);
|
||||||
|
if (!cf.getC().isConfigurationSection(jobName))
|
||||||
|
continue;
|
||||||
|
cfg = cf;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean removeQuestInFile(CommandSender sender, String questName, String jobName) {
|
||||||
|
|
||||||
|
ConfigReader cfg = getQuestConfig(jobName);
|
||||||
|
|
||||||
|
if (cfg == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
cfg.load();
|
||||||
|
cfg.set(jobName + ".Quests." + questName, null);
|
||||||
|
cfg.save();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean updateQuestInFile(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
if (quest.getJob() == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ConfigReader cfg = getQuestConfig(quest.getJob().getName());
|
||||||
|
|
||||||
|
if (cfg == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
cfg.load();
|
||||||
|
|
||||||
|
if (quest.getConfigName() == null) {
|
||||||
|
for (int i = 1; i < 500; i++) {
|
||||||
|
if (cfg.getC().isConfigurationSection(quest.getJob().getName() + ".Quests." + i))
|
||||||
|
continue;
|
||||||
|
quest.setConfigName(String.valueOf(i));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String path = quest.getJob().getName() + ".Quests." + quest.getConfigName() + ".";
|
||||||
|
|
||||||
|
cfg.set(path + "Name", quest.getQuestName());
|
||||||
|
|
||||||
|
cfg.set(path + "Chance", quest.getChance() != 100 ? quest.getChance() : null);
|
||||||
|
|
||||||
|
cfg.set(path + "fromLevel", quest.getMinLvl() > 0 ? quest.getMinLvl() : null);
|
||||||
|
|
||||||
|
cfg.set(path + "toLevel", quest.getMaxLvl() != null ? quest.getMaxLvl() : null);
|
||||||
|
|
||||||
|
if (tempObjectives.containsKey(sender.getName())) {
|
||||||
|
cfg.set(path + "Objectives", tempObjectives.get(sender.getName()));
|
||||||
|
quest.getObjectives().clear();
|
||||||
|
for (String one : tempObjectives.get(sender.getName())) {
|
||||||
|
quest.addObjectives(QuestObjective.get(one, quest.getJob().getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg.set(path + "RewardCommands", quest.getRewardCmds().isEmpty() ? null : quest.getRewardCmds());
|
||||||
|
cfg.set(path + "RewardDesc", quest.getDescription().isEmpty() ? null : quest.getDescription());
|
||||||
|
cfg.set(path + "RestrictedAreas", quest.getRestrictedAreas().isEmpty() ? null : quest.getRestrictedAreas());
|
||||||
|
|
||||||
|
cfg.save();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void objectivesWindow(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
RawMessage rm = new RawMessage();
|
||||||
|
rm.addText(quest.getQuestName() + " objectives");
|
||||||
|
|
||||||
|
RawMessageCommand rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
List<String> objectives = getRecords(quest, "Objectives");
|
||||||
|
|
||||||
|
tempObjectives.put(sender.getName(), objectives);
|
||||||
|
|
||||||
|
ChatMessageListEdit cmle = new ChatMessageListEdit(sender, objectives, ChatEditType.String) {
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cmle.setTopLine(rm);
|
||||||
|
cmle.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rewardCommandsWindow(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
RawMessage rm = new RawMessage();
|
||||||
|
rm.addText(quest.getQuestName() + " reward commmands");
|
||||||
|
|
||||||
|
RawMessageCommand rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
ChatMessageListEdit cmle = new ChatMessageListEdit(sender, quest.getRewardCmds(), ChatEditType.String) {
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cmle.setTopLine(rm);
|
||||||
|
cmle.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rewardDescWindow(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
RawMessage rm = new RawMessage();
|
||||||
|
rm.addText(quest.getQuestName() + " reward description");
|
||||||
|
|
||||||
|
RawMessageCommand rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
ChatMessageListEdit cmle = new ChatMessageListEdit(sender, quest.getDescription(), ChatEditType.String) {
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cmle.setTopLine(rm);
|
||||||
|
cmle.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void restrictedAreaWindow(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
RawMessage rm = new RawMessage();
|
||||||
|
rm.addText(quest.getQuestName() + " restricted areas");
|
||||||
|
|
||||||
|
RawMessageCommand rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
ChatMessageListEdit cmle = new ChatMessageListEdit(sender, quest.getRestrictedAreas(), ChatEditType.String) {
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cmle.setTopLine(rm);
|
||||||
|
cmle.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mainWindow(CommandSender sender, Quest quest) {
|
||||||
|
|
||||||
|
LC.info_Spliter.sendMessage(sender);
|
||||||
|
|
||||||
|
RawMessage rm = new RawMessage();
|
||||||
|
|
||||||
|
rm.addText("&eName: &f" + quest.getQuestName());
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", quest.getQuestName()));
|
||||||
|
RawMessageCommand rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
ChatMessageEdit chatEdit = new ChatMessageEdit(sender, quest.getQuestName()) {
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
quest.setQuestName(message);
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
chatEdit.setCheckForCancel(true);
|
||||||
|
chatEdit.printMessage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
List<String> objectives = getRecords(quest, "Objectives");
|
||||||
|
if (!tempObjectives.containsKey(sender.getName()))
|
||||||
|
tempObjectives.put(sender.getName(), objectives);
|
||||||
|
else
|
||||||
|
objectives = tempObjectives.get(sender.getName());
|
||||||
|
|
||||||
|
rm.addText((objectives.isEmpty() ? "&c" : "&e") + "Objectives");
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", "Objectives"));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
objectivesWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText((quest.getRewardCmds().isEmpty() ? "&c" : "&e") + "Reward commands");
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", "Reward commands"));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
rewardCommandsWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText("&eDescription");
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", "Description"));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
rewardDescWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText("&eRestricted areas");
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", "Restricted areas"));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
restrictedAreaWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
String jobName = quest.getJob() == null ? "&c-" : quest.getJob().getName();
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText("&eJob: &f" + jobName);
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", jobName));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
ChatMessageEdit chatEdit = new ChatMessageEdit(sender, jobName) {
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
|
||||||
|
message = CMIChatColor.stripColor(CMIText.getFirstVariable(message));
|
||||||
|
if (!CMIText.isValidString(message))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Job j = Jobs.getJob(message);
|
||||||
|
|
||||||
|
if (j == null) {
|
||||||
|
sender.sendMessage(Jobs.getLanguage().getMessage("general.error.jobname"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quest.getJob() != j) {
|
||||||
|
if (quest.getJob() != null) {
|
||||||
|
removeQuestInFile(sender, quest.getConfigName(), quest.getJob().getName());
|
||||||
|
quest.getJob().getQuests().remove(quest);
|
||||||
|
}
|
||||||
|
j.getQuests().add(quest);
|
||||||
|
quest.setConfigName(null);
|
||||||
|
quest.setJob(j);
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
|
||||||
|
quest.setJob(j);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
chatEdit.setCheckForCancel(true);
|
||||||
|
chatEdit.printMessage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText("&eChance: &f" + quest.getChance());
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", quest.getChance()));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
ChatMessageEdit chatEdit = new ChatMessageEdit(sender, quest.getQuestName()) {
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
int chance = 0;
|
||||||
|
try {
|
||||||
|
chance = Integer.parseInt(message);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
LC.info_UseInteger.sendMessage(sender);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
chance = CMINumber.clamp(chance, 0, 100);
|
||||||
|
quest.setChance(chance);
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
chatEdit.setCheckForCancel(true);
|
||||||
|
chatEdit.printMessage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
|
||||||
|
rm.addText("&eFrom level: &f" + quest.getMinLvl());
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", quest.getMinLvl()));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
ChatMessageEdit chatEdit = new ChatMessageEdit(sender, String.valueOf(quest.getMinLvl())) {
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
|
||||||
|
int level = 0;
|
||||||
|
try {
|
||||||
|
level = Integer.parseInt(message);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
LC.info_UseInteger.sendMessage(sender);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level > quest.getMaxLvl())
|
||||||
|
level = quest.getMaxLvl();
|
||||||
|
|
||||||
|
quest.setMinLvl(level);
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
chatEdit.setCheckForCancel(true);
|
||||||
|
chatEdit.printMessage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.addText("\n");
|
||||||
|
rm.addText("&eTo level: &f" + (quest.getMaxLvl() == null ? "-" : quest.getMaxLvl()));
|
||||||
|
rm.addHover(LC.modify_editSymbolHover.getLocale("[text]", (quest.getMaxLvl() == null ? "-" : quest.getMaxLvl())));
|
||||||
|
rmc = new RawMessageCommand() {
|
||||||
|
@Override
|
||||||
|
public void run(CommandSender sender) {
|
||||||
|
ChatMessageEdit chatEdit = new ChatMessageEdit(sender, String.valueOf((quest.getMaxLvl() == null ? "100" : quest.getMaxLvl()))) {
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
|
||||||
|
int level = 0;
|
||||||
|
try {
|
||||||
|
level = Integer.parseInt(message);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
LC.info_UseInteger.sendMessage(sender);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level < quest.getMinLvl())
|
||||||
|
level = quest.getMinLvl();
|
||||||
|
|
||||||
|
quest.setMaxLvl(level);
|
||||||
|
updateQuestInFile(sender, quest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
mainWindow(sender, quest);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
chatEdit.setCheckForCancel(true);
|
||||||
|
chatEdit.printMessage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rm.addCommand(rmc);
|
||||||
|
|
||||||
|
rm.show(sender);
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -87,7 +87,8 @@ public class LanguageManager {
|
|||||||
c.get("general.admin.error", "&cThere was an error in the command.");
|
c.get("general.admin.error", "&cThere was an error in the command.");
|
||||||
c.get("general.admin.success", "&eYour command has been performed.");
|
c.get("general.admin.success", "&eYour command has been performed.");
|
||||||
c.get("general.error.noHelpPage", "&cThere is no help page by this number!");
|
c.get("general.error.noHelpPage", "&cThere is no help page by this number!");
|
||||||
c.get("general.error.job", "&cThe job you selected does not exist or you not joined to this!");
|
c.get("general.error.job", "&cThe job you selected does not exist!");
|
||||||
|
c.get("general.error.jobname", "&cCan't find job by this name!");
|
||||||
c.addComment("general.error.noinfoByPlayer", "Only %playername% can be used here");
|
c.addComment("general.error.noinfoByPlayer", "Only %playername% can be used here");
|
||||||
c.get("general.error.noinfoByPlayer", "&cNo information found by [%playername%] player name!");
|
c.get("general.error.noinfoByPlayer", "&cNo information found by [%playername%] player name!");
|
||||||
c.get("general.error.worldisdisabled", "&cYou can't use command in this world!");
|
c.get("general.error.worldisdisabled", "&cYou can't use command in this world!");
|
||||||
@ -246,22 +247,9 @@ public class LanguageManager {
|
|||||||
c.get("command.editjobs.help.modify.look", "&6LOOKING AT");
|
c.get("command.editjobs.help.modify.look", "&6LOOKING AT");
|
||||||
c.get("command.editjobs.help.modify.lookHover", "&6Press to grab info from block you are looking");
|
c.get("command.editjobs.help.modify.lookHover", "&6Press to grab info from block you are looking");
|
||||||
|
|
||||||
c.get("command.editquests.help.info", "Edit current quests.");
|
c.get("command.editquests.help.info", "Edit job quests.");
|
||||||
c.get("command.editquests.help.args", "");
|
c.get("command.editquests.help.args", "(page)");
|
||||||
c.get("command.editquests.help.list.quest", "&eQuests:");
|
c.get("command.editquests.help.output.list", "&6[questName] &7- &f[jobName]");
|
||||||
c.get("command.editquests.help.list.jobs", " -> [&e%jobname%&r]");
|
|
||||||
c.get("command.editquests.help.list.quests", " -> [&e%questname%&r]");
|
|
||||||
c.get("command.editquests.help.list.actions", " -> [&e%actionname%&r]");
|
|
||||||
c.get("command.editquests.help.list.objectives", " -> [&e%objectivename%&r]");
|
|
||||||
c.get("command.editquests.help.list.objectiveRemove", "&c[X]");
|
|
||||||
c.get("command.editquests.help.list.objectiveAdd", " -> &e[&2+&e]");
|
|
||||||
c.get("command.editquests.help.modify.newValue", "&eEnter new value");
|
|
||||||
c.get("command.editquests.help.modify.enter", "&eEnter new name or press ");
|
|
||||||
c.get("command.editquests.help.modify.hand", "&6HAND ");
|
|
||||||
c.get("command.editquests.help.modify.handHover", "&6Press to grab info from item in your hand");
|
|
||||||
c.get("command.editquests.help.modify.or", "&eor ");
|
|
||||||
c.get("command.editquests.help.modify.look", "&6LOOKING AT");
|
|
||||||
c.get("command.editquests.help.modify.lookHover", "&6Press to grab info from block you are looking");
|
|
||||||
|
|
||||||
c.get("command.blockinfo.help.info", "Shows information for the block you are looking at.");
|
c.get("command.blockinfo.help.info", "Shows information for the block you are looking at.");
|
||||||
c.get("command.blockinfo.help.args", "");
|
c.get("command.blockinfo.help.args", "");
|
||||||
|
@ -28,185 +28,193 @@ public class Quest {
|
|||||||
private final Set<ActionType> actions = new HashSet<>();
|
private final Set<ActionType> actions = new HashSet<>();
|
||||||
|
|
||||||
public Quest(String questName, Job job) {
|
public Quest(String questName, Job job) {
|
||||||
setQuestName(questName);
|
setQuestName(questName);
|
||||||
this.job = job;
|
this.job = job;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isStopped() {
|
public boolean isStopped() {
|
||||||
return stopped;
|
return stopped;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStopped(boolean stopped) {
|
public void setStopped(boolean stopped) {
|
||||||
this.stopped = stopped;
|
this.stopped = stopped;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getRewardCmds() {
|
public List<String> getRewardCmds() {
|
||||||
return rewardCmds;
|
return rewardCmds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRewardCmds(List<String> rewardCmds) {
|
public void setRewardCmds(List<String> rewardCmds) {
|
||||||
this.rewardCmds.clear();
|
this.rewardCmds.clear();
|
||||||
|
|
||||||
if (rewardCmds != null) {
|
if (rewardCmds != null) {
|
||||||
this.rewardCmds.addAll(rewardCmds);
|
this.rewardCmds.addAll(rewardCmds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getDescription() {
|
public List<String> getDescription() {
|
||||||
return rewards;
|
return rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDescription(List<String> rewards) {
|
public void setDescription(List<String> rewards) {
|
||||||
this.rewards.clear();
|
this.rewards.clear();
|
||||||
|
|
||||||
if (rewards != null) {
|
if (rewards != null) {
|
||||||
this.rewards.addAll(rewards);
|
this.rewards.addAll(rewards);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getRestrictedAreas() {
|
public List<String> getRestrictedAreas() {
|
||||||
return area;
|
return area;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRestrictedArea(List<String> area) {
|
public void setRestrictedArea(List<String> area) {
|
||||||
this.area.clear();
|
this.area.clear();
|
||||||
|
|
||||||
if (area != null) {
|
if (area != null) {
|
||||||
this.area.addAll(area);
|
this.area.addAll(area);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getValidUntil() {
|
public long getValidUntil() {
|
||||||
if (validUntil < System.currentTimeMillis()) {
|
if (validUntil < System.currentTimeMillis()) {
|
||||||
int hour = Jobs.getGCManager().getResetTimeHour();
|
int hour = Jobs.getGCManager().getResetTimeHour();
|
||||||
int minute = Jobs.getGCManager().getResetTimeMinute();
|
int minute = Jobs.getGCManager().getResetTimeMinute();
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
|
|
||||||
c.add(Calendar.DAY_OF_MONTH, 1);
|
c.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
|
|
||||||
c.set(Calendar.HOUR_OF_DAY, hour);
|
c.set(Calendar.HOUR_OF_DAY, hour);
|
||||||
c.set(Calendar.MINUTE, minute);
|
c.set(Calendar.MINUTE, minute);
|
||||||
c.set(Calendar.SECOND, 0);
|
c.set(Calendar.SECOND, 0);
|
||||||
c.set(Calendar.MILLISECOND, 0);
|
c.set(Calendar.MILLISECOND, 0);
|
||||||
|
|
||||||
if (c.getTimeInMillis() - System.currentTimeMillis() > 86400000) {
|
if (c.getTimeInMillis() - System.currentTimeMillis() > 86400000) {
|
||||||
c = Calendar.getInstance();
|
c = Calendar.getInstance();
|
||||||
|
|
||||||
c.set(Calendar.HOUR_OF_DAY, hour);
|
c.set(Calendar.HOUR_OF_DAY, hour);
|
||||||
c.set(Calendar.MINUTE, minute);
|
c.set(Calendar.MINUTE, minute);
|
||||||
c.set(Calendar.SECOND, 0);
|
c.set(Calendar.SECOND, 0);
|
||||||
c.set(Calendar.MILLISECOND, 0);
|
c.set(Calendar.MILLISECOND, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
validUntil = c.getTimeInMillis();
|
validUntil = c.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
return validUntil;
|
return validUntil;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setValidUntil(long validUntil) {
|
public void setValidUntil(long validUntil) {
|
||||||
this.validUntil = validUntil;
|
this.validUntil = validUntil;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Job getJob() {
|
public Job getJob() {
|
||||||
return Jobs.getJob(job.getName());
|
if (job == null)
|
||||||
|
return null;
|
||||||
|
return Jobs.getJob(job.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setJob(Job job) {
|
public void setJob(Job job) {
|
||||||
this.job = job;
|
this.job = job;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getChance() {
|
public int getChance() {
|
||||||
return chance;
|
return chance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChance(int chance) {
|
public void setChance(int chance) {
|
||||||
this.chance = chance;
|
this.chance = chance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getQuestName() {
|
public String getQuestName() {
|
||||||
return questName;
|
return questName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setQuestName(String questName) {
|
public void setQuestName(String questName) {
|
||||||
this.questName = questName;
|
this.questName = questName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getConfigName() {
|
public String getConfigName() {
|
||||||
return configName;
|
return configName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigName(String configName) {
|
public void setConfigName(String configName) {
|
||||||
this.configName = configName;
|
this.configName = configName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMinLvl() {
|
public int getMinLvl() {
|
||||||
return minLvl;
|
return minLvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMinLvl(Integer minLvl) {
|
public void setMinLvl(Integer minLvl) {
|
||||||
this.minLvl = minLvl;
|
this.minLvl = minLvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getMaxLvl() {
|
public Integer getMaxLvl() {
|
||||||
return maxLvl;
|
return maxLvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMaxLvl(Integer maxLvl) {
|
public void setMaxLvl(Integer maxLvl) {
|
||||||
this.maxLvl = maxLvl;
|
this.maxLvl = maxLvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInLevelRange(Integer level) {
|
public boolean isInLevelRange(Integer level) {
|
||||||
if (level == null)
|
if (level == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (level < minLvl)
|
if (level < minLvl)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (maxLvl != null && level > maxLvl)
|
if (maxLvl != null && level > maxLvl)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<ActionType, Map<String, QuestObjective>> getObjectives() {
|
public Map<ActionType, Map<String, QuestObjective>> getObjectives() {
|
||||||
return objectives;
|
return objectives;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasObjective(QuestObjective objective) {
|
public boolean hasObjective(QuestObjective objective) {
|
||||||
Map<String, QuestObjective> old = objectives.get(objective.getAction());
|
Map<String, QuestObjective> old = objectives.get(objective.getAction());
|
||||||
if (old == null)
|
if (old == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (QuestObjective one : old.values()) {
|
for (QuestObjective one : old.values()) {
|
||||||
if (one.getTargetId() == objective.getTargetId() &&
|
if (one.getTargetId() == objective.getTargetId() &&
|
||||||
one.getAction() == objective.getAction() && objective.getAmount() == one.getAmount()
|
one.getAction() == objective.getAction() && objective.getAmount() == one.getAmount()
|
||||||
&& objective.getTargetName().equals(one.getTargetName()))
|
&& objective.getTargetName().equals(one.getTargetName()))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setObjectives(Map<ActionType, Map<String, QuestObjective>> objectives) {
|
public void setObjectives(Map<ActionType, Map<String, QuestObjective>> objectives) {
|
||||||
if (objectives == null) {
|
if (objectives == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.objectives = objectives;
|
this.objectives = objectives;
|
||||||
objectives.keySet().forEach(actions::add);
|
objectives.keySet().forEach(actions::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addObjectives(List<QuestObjective> objectives) {
|
||||||
|
for (QuestObjective one : objectives) {
|
||||||
|
addObjective(one);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addObjective(QuestObjective objective) {
|
public void addObjective(QuestObjective objective) {
|
||||||
Map<String, QuestObjective> old = objectives.get(objective.getAction());
|
Map<String, QuestObjective> old = objectives.get(objective.getAction());
|
||||||
if (old == null) {
|
if (old == null) {
|
||||||
old = new HashMap<>();
|
old = new HashMap<>();
|
||||||
objectives.put(objective.getAction(), old);
|
objectives.put(objective.getAction(), old);
|
||||||
}
|
}
|
||||||
old.put(objective.getTargetName(), objective);
|
old.put(objective.getTargetName(), objective);
|
||||||
actions.add(objective.getAction());
|
actions.add(objective.getAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasAction(ActionType action) {
|
public boolean hasAction(ActionType action) {
|
||||||
return actions.contains(action);
|
return actions.contains(action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
package com.gamingmesh.jobs.container;
|
package com.gamingmesh.jobs.container;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.gamingmesh.jobs.Jobs;
|
||||||
|
import com.gamingmesh.jobs.config.ConfigManager.KeyValues;
|
||||||
|
|
||||||
|
import net.Zrips.CMILib.Messages.CMIMessages;
|
||||||
|
|
||||||
public class QuestObjective {
|
public class QuestObjective {
|
||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
@ -8,6 +16,54 @@ public class QuestObjective {
|
|||||||
private int amount = Integer.MAX_VALUE;
|
private int amount = Integer.MAX_VALUE;
|
||||||
private ActionType action = null;
|
private ActionType action = null;
|
||||||
|
|
||||||
|
public static List<QuestObjective> get(String objective, String jobName) {
|
||||||
|
|
||||||
|
String[] split = objective.split(";", 3);
|
||||||
|
|
||||||
|
List<QuestObjective> list = new ArrayList<QuestObjective>();
|
||||||
|
|
||||||
|
if (split.length < 2) {
|
||||||
|
CMIMessages.consoleMessage("Job " + jobName + " has incorrect quest objective (" + objective + ")!");
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
ActionType actionType = ActionType.getByName(split[0]);
|
||||||
|
|
||||||
|
if (actionType == null)
|
||||||
|
return list;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
String mats = split[1].toUpperCase();
|
||||||
|
String[] co = mats.split(",");
|
||||||
|
|
||||||
|
int amount = 1;
|
||||||
|
if (split.length <= 3)
|
||||||
|
amount = Integer.parseInt(split[2]);
|
||||||
|
|
||||||
|
if (co.length > 0) {
|
||||||
|
for (String materials : co) {
|
||||||
|
KeyValues kv = Jobs.getConfigManager().getKeyValue(materials, actionType, jobName);
|
||||||
|
|
||||||
|
if (kv == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
list.add(new QuestObjective(actionType, kv.getId(), kv.getMeta(), (kv.getType() + kv.getSubType()).toUpperCase(), amount));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
KeyValues kv = Jobs.getConfigManager().getKeyValue(mats, actionType, jobName);
|
||||||
|
|
||||||
|
if (kv != null) {
|
||||||
|
list.add(new QuestObjective(actionType, kv.getId(), kv.getMeta(), (kv.getType() + kv.getSubType()).toUpperCase(), amount));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
CMIMessages.consoleMessage("Job " + jobName + " has incorrect quest objective (" + objective + ")!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
public QuestObjective(ActionType action, int id, String meta, String name, int amount) {
|
public QuestObjective(ActionType action, int id, String meta, String name, int amount) {
|
||||||
this.action = action;
|
this.action = action;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
Loading…
Reference in New Issue
Block a user