use of betterquesting.api.questing.tasks.ITask in project BetterQuesting by Funwayguy.
the class TaskStorage method readFromJson_Progress.
private void readFromJson_Progress(NBTTagList json) {
for (int i = 0; i < json.tagCount(); i++) {
NBTBase entry = json.get(i);
if (entry == null || entry.getId() != 10) {
continue;
}
NBTTagCompound jsonTask = (NBTTagCompound) entry;
int index = jsonTask.hasKey("index", 99) ? jsonTask.getInteger("index") : -1;
ResourceLocation loc = new ResourceLocation(jsonTask.getString("taskID"));
ITask task = getValue(index);
if (task instanceof TaskPlaceholder) {
if (!task.getFactoryID().equals(loc)) {
((TaskPlaceholder) task).setTaskData(jsonTask, EnumSaveType.PROGRESS);
} else {
task.readFromNBT(jsonTask, EnumSaveType.PROGRESS);
}
} else if (task != null) {
if (task.getFactoryID().equals(loc)) {
task.readFromNBT(jsonTask, EnumSaveType.PROGRESS);
} else if (// Restored placeholder progress
FactoryTaskPlaceholder.INSTANCE.getRegistryName().equals(loc)) {
task.readFromNBT(jsonTask.getCompoundTag("orig_prog"), EnumSaveType.PROGRESS);
}
}
}
}
use of betterquesting.api.questing.tasks.ITask in project BetterQuesting by Funwayguy.
the class GuiQuest method refreshTaskPanel.
private void refreshTaskPanel() {
if (pnTask != null) {
cvInner.removePanel(pnTask);
}
if (taskIndex < 0 || taskIndex >= quest.getTasks().size()) {
if (rectTask != null && quest.getTasks().size() == 0) {
this.initPanel();
} else {
titleTask.setText("?");
updateButtons();
}
return;
}
ITask tsk = quest.getTasks().getAllValues().get(taskIndex);
pnTask = new PanelLegacyEmbed<>(rectTask, tsk.getTaskGui(rectTask.getX(), rectTask.getY(), rectTask.getWidth(), rectTask.getHeight(), quest));
cvInner.addPanel(pnTask);
titleTask.setText(I18n.format(tsk.getUnlocalisedName()));
updateButtons();
}
use of betterquesting.api.questing.tasks.ITask in project BetterQuesting by Funwayguy.
the class GuiTaskEditor method actionPerformed.
@Override
public void actionPerformed(GuiButton button) {
super.actionPerformed(button);
int column = button.id & 3;
int id = (button.id >> 2) - 1;
if (id < 0) {
return;
}
if (// Edit reward
column == 0) {
ITask task = quest.getTasks().getValue(id);
GuiScreen editor = task.getTaskEditor(this, quest);
if (editor != null) {
mc.displayGuiScreen(editor);
} else {
mc.displayGuiScreen(new GuiTaskEditDefault(this, quest, task));
}
} else if (// Delete reward
column == 1) {
quest.getTasks().removeKey(id);
SendChanges();
} else if (// Add reward
column == 2) {
if (id >= 0 && id < taskTypes.size()) {
quest.getTasks().add(TaskRegistry.INSTANCE.createTask(taskTypes.get(id).getRegistryName()), quest.getTasks().nextKey());
SendChanges();
}
}
}
use of betterquesting.api.questing.tasks.ITask in project BetterQuesting by Funwayguy.
the class GuiTaskEditDefault method initGui.
@Override
public void initGui() {
super.initGui();
if (!isDone) {
this.isDone = true;
ITask task = quest.getTasks().getValue(tID);
if (task != null) {
this.mc.displayGuiScreen(new GuiJsonEditor(this, json, task.getDocumentation(), this));
} else {
this.mc.displayGuiScreen(parent);
}
} else {
this.mc.displayGuiScreen(parent);
}
}
use of betterquesting.api.questing.tasks.ITask in project BetterQuesting by Funwayguy.
the class QuestCommandComplete method runCommand.
@Override
public void runCommand(MinecraftServer server, CommandBase command, ICommandSender sender, String[] args) throws CommandException {
UUID uuid = null;
if (args.length >= 3) {
uuid = this.findPlayerID(server, sender, args[2]);
if (uuid == null) {
throw this.getException(command);
}
} else {
uuid = this.findPlayerID(server, sender, sender.getName());
}
String pName = uuid == null ? "NULL" : NameCache.INSTANCE.getName(uuid);
try {
int id = Integer.parseInt(args[1].trim());
IQuest quest = QuestDatabase.INSTANCE.getValue(id);
quest.setComplete(uuid, 0);
int done = 0;
if (// Preliminary check
!quest.getProperties().getProperty(NativeProps.LOGIC_TASK).getResult(done, quest.getTasks().size())) {
for (ITask task : quest.getTasks().getAllValues()) {
task.setComplete(uuid);
done += 1;
if (quest.getProperties().getProperty(NativeProps.LOGIC_TASK).getResult(done, quest.getTasks().size())) {
// Only complete enough quests to claim the reward
break;
}
}
}
sender.sendMessage(new TextComponentTranslation("betterquesting.cmd.complete", new TextComponentTranslation(quest.getUnlocalisedName()), pName));
} catch (Exception e) {
throw getException(command);
}
PacketSender.INSTANCE.sendToAll(QuestDatabase.INSTANCE.getSyncPacket());
}
Aggregations