Search in sources :

Example 1 with IItemTask

use of betterquesting.api.questing.tasks.IItemTask in project BetterQuesting by Funwayguy.

the class TileSubmitStation method update.

@Override
public void update() {
    if (world.isRemote || QuestSettings.INSTANCE.getProperty(NativeProps.EDIT_MODE)) {
        return;
    }
    IQuest q = getQuest();
    IItemTask t = getItemTask();
    if (world.getTotalWorldTime() % 10 == 0) {
        if (owner != null && q != null && t != null && owner != null && !itemStack.get(0).isEmpty() && itemStack.get(1).isEmpty()) {
            ItemStack inStack = itemStack.get(0).copy();
            if (t.canAcceptItem(owner, inStack)) {
                // Even if this returns an invalid item for submission it will be moved next pass
                itemStack.set(0, t.submitItem(owner, inStack));
                if (((ITask) t).isComplete(owner)) {
                    PacketSender.INSTANCE.sendToAll(q.getSyncPacket());
                    reset();
                    world.getMinecraftServer().getPlayerList().sendToAllNearExcept(null, pos.getX(), pos.getY(), pos.getZ(), 128, world.provider.getDimension(), getUpdatePacket());
                } else {
                    needsUpdate = true;
                }
            } else {
                itemStack.set(1, inStack);
                itemStack.set(0, ItemStack.EMPTY);
            }
        }
        if (needsUpdate) {
            needsUpdate = false;
            if (q != null && !world.isRemote) {
                PacketSender.INSTANCE.sendToAll(q.getSyncPacket());
            }
        } else if (t != null && ((ITask) t).isComplete(owner)) {
            reset();
            world.getMinecraftServer().getPlayerList().sendToAllNearExcept(null, pos.getX(), pos.getY(), pos.getZ(), 128, world.provider.getDimension(), getUpdatePacket());
        }
    }
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) IQuest(betterquesting.api.questing.IQuest) IItemTask(betterquesting.api.questing.tasks.IItemTask) ItemStack(net.minecraft.item.ItemStack)

Aggregations

IQuest (betterquesting.api.questing.IQuest)1 IItemTask (betterquesting.api.questing.tasks.IItemTask)1 ITask (betterquesting.api.questing.tasks.ITask)1 ItemStack (net.minecraft.item.ItemStack)1