Search in sources :

Example 6 with ITask

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);
            }
        }
    }
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) NBTBase(net.minecraft.nbt.NBTBase) ResourceLocation(net.minecraft.util.ResourceLocation) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) FactoryTaskPlaceholder(betterquesting.api.placeholders.tasks.FactoryTaskPlaceholder) TaskPlaceholder(betterquesting.api.placeholders.tasks.TaskPlaceholder)

Example 7 with ITask

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();
}
Also used : ITask(betterquesting.api.questing.tasks.ITask)

Example 8 with ITask

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();
        }
    }
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) GuiScreen(net.minecraft.client.gui.GuiScreen)

Example 9 with ITask

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);
    }
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) GuiJsonEditor(betterquesting.client.gui.editors.json.scrolling.GuiJsonEditor)

Example 10 with ITask

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());
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) TextComponentTranslation(net.minecraft.util.text.TextComponentTranslation) IQuest(betterquesting.api.questing.IQuest) UUID(java.util.UUID) CommandException(net.minecraft.command.CommandException)

Aggregations

ITask (betterquesting.api.questing.tasks.ITask)20 IQuest (betterquesting.api.questing.IQuest)9 UUID (java.util.UUID)8 ArrayList (java.util.ArrayList)6 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)6 ResourceLocation (net.minecraft.util.ResourceLocation)5 TaskPlaceholder (betterquesting.api.placeholders.tasks.TaskPlaceholder)3 QuestInstance (betterquesting.questing.QuestInstance)3 FactoryTaskPlaceholder (betterquesting.api.placeholders.tasks.FactoryTaskPlaceholder)2 IParty (betterquesting.api.questing.party.IParty)2 UserEntry (betterquesting.misc.UserEntry)2 HashMap (java.util.HashMap)2 List (java.util.List)2 NBTBase (net.minecraft.nbt.NBTBase)2 EnumPacketAction (betterquesting.api.enums.EnumPacketAction)1 RewardPlaceholder (betterquesting.api.placeholders.rewards.RewardPlaceholder)1 IPropertyContainer (betterquesting.api.properties.IPropertyContainer)1 IQuestDatabase (betterquesting.api.questing.IQuestDatabase)1 IReward (betterquesting.api.questing.rewards.IReward)1 IFluidTask (betterquesting.api.questing.tasks.IFluidTask)1