Search in sources :

Example 1 with IParty

use of betterquesting.api.questing.party.IParty in project BetterQuesting by Funwayguy.

the class QuestInstance method getPartyPlayers.

private List<EntityPlayerMP> getPartyPlayers(EntityPlayerMP player) {
    List<EntityPlayerMP> list = new ArrayList<EntityPlayerMP>();
    IParty party = PartyManager.INSTANCE.getUserParty(QuestingAPI.getQuestingUUID(player));
    if (party == null) {
        list.add(player);
        return list;
    } else {
        MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
        for (UUID mem : party.getMembers()) {
            for (EntityPlayerMP p : server.getPlayerList().getPlayers()) {
                if (p != null && QuestingAPI.getQuestingUUID(p).equals(mem)) {
                    list.add(p);
                }
            }
        }
        return list;
    }
}
Also used : ArrayList(java.util.ArrayList) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) IParty(betterquesting.api.questing.party.IParty) UUID(java.util.UUID) MinecraftServer(net.minecraft.server.MinecraftServer)

Example 2 with IParty

use of betterquesting.api.questing.party.IParty in project BetterQuesting by Funwayguy.

the class QuestInstance method claimReward.

@Override
public void claimReward(EntityPlayer player) {
    for (IReward rew : rewards.getAllValues()) {
        rew.claimReward(player, this);
    }
    UUID pID = QuestingAPI.getQuestingUUID(player);
    IParty party = PartyManager.INSTANCE.getUserParty(pID);
    if (party != null && this.qInfo.getProperty(NativeProps.PARTY_LOOT)) {
        for (UUID mem : party.getMembers()) {
            EnumPartyStatus pStat = party.getStatus(mem);
            if (pStat == null || pStat == EnumPartyStatus.INVITE) {
                continue;
            }
            UserEntry entry = GetUserEntry(mem);
            if (entry == null) {
                entry = new UserEntry(mem);
                this.completeUsers.add(entry);
            }
            entry.setClaimed(true, player.world.getTotalWorldTime());
        }
    } else {
        UserEntry entry = GetUserEntry(pID);
        if (entry == null) {
            entry = new UserEntry(pID);
            this.completeUsers.add(entry);
        }
        entry.setClaimed(true, player.world.getTotalWorldTime());
    }
    PacketSender.INSTANCE.sendToAll(getSyncPacket());
}
Also used : EnumPartyStatus(betterquesting.api.enums.EnumPartyStatus) IReward(betterquesting.api.questing.rewards.IReward) UserEntry(betterquesting.misc.UserEntry) IParty(betterquesting.api.questing.party.IParty) UUID(java.util.UUID)

Example 3 with IParty

use of betterquesting.api.questing.party.IParty in project BetterQuesting by Funwayguy.

the class QuestInstance method detect.

/**
 * Fired when someone clicks the detect button for this quest
 */
@Override
public void detect(EntityPlayer player) {
    UUID playerID = QuestingAPI.getQuestingUUID(player);
    if (isComplete(playerID) && (qInfo.getProperty(NativeProps.REPEAT_TIME).intValue() < 0 || rewards.size() <= 0)) {
        return;
    } else if (!canSubmit(player)) {
        return;
    }
    if (isUnlocked(playerID) || QuestSettings.INSTANCE.getProperty(NativeProps.EDIT_MODE)) {
        int done = 0;
        boolean update = false;
        for (ITask tsk : tasks.getAllValues()) {
            if (!tsk.isComplete(playerID)) {
                tsk.detect(player, this);
                if (tsk.isComplete(playerID)) {
                    IParty party = PartyManager.INSTANCE.getUserParty(playerID);
                    if (// Ensures task is marked as complete for all team members
                    party != null) {
                        for (UUID mem : party.getMembers()) {
                            tsk.setComplete(mem);
                        }
                    }
                    done += 1;
                    update = true;
                }
            } else {
                done += 1;
            }
        }
        if ((tasks.size() > 0 || !QuestSettings.INSTANCE.getProperty(NativeProps.EDIT_MODE)) && qInfo.getProperty(NativeProps.LOGIC_TASK).getResult(done, tasks.size())) {
            setComplete(playerID, player.world.getTotalWorldTime());
            if (!QuestSettings.INSTANCE.getProperty(NativeProps.EDIT_MODE) && !qInfo.getProperty(NativeProps.SILENT)) {
                postPresetNotice(player, 2);
            }
        } else if (update && qInfo.getProperty(NativeProps.SIMULTANEOUS)) {
            resetUser(playerID, false);
            PacketSender.INSTANCE.sendToAll(getSyncPacket());
        } else if (update) {
            if (!QuestSettings.INSTANCE.getProperty(NativeProps.EDIT_MODE) && !qInfo.getProperty(NativeProps.SILENT)) {
                postPresetNotice(player, 1);
            }
        }
        PacketSender.INSTANCE.sendToAll(getSyncPacket());
    }
}
Also used : ITask(betterquesting.api.questing.tasks.ITask) IParty(betterquesting.api.questing.party.IParty) UUID(java.util.UUID)

Example 4 with IParty

use of betterquesting.api.questing.party.IParty in project BetterQuesting by Funwayguy.

the class EventHandler method onLivingDeath.

@SubscribeEvent
public void onLivingDeath(LivingDeathEvent event) {
    if (event.getEntityLiving().world.isRemote || !QuestSettings.INSTANCE.getProperty(NativeProps.HARDCORE)) {
        return;
    }
    if (event.getEntityLiving() instanceof EntityPlayer) {
        UUID uuid = QuestingAPI.getQuestingUUID(((EntityPlayer) event.getEntityLiving()));
        IParty party = PartyManager.INSTANCE.getUserParty(uuid);
        if (party == null || !party.getProperties().getProperty(NativeProps.PARTY_LIVES)) {
            int lives = LifeDatabase.INSTANCE.getLives(uuid);
            LifeDatabase.INSTANCE.setLives(uuid, lives - 1);
        } else {
            int lives = LifeDatabase.INSTANCE.getLives(party);
            LifeDatabase.INSTANCE.setLives(party, lives - 1);
        }
    }
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) IParty(betterquesting.api.questing.party.IParty) UUID(java.util.UUID) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 5 with IParty

use of betterquesting.api.questing.party.IParty in project BetterQuesting by Funwayguy.

the class PartyManager method writeToNBT.

@Override
public NBTTagList writeToNBT(NBTTagList json, EnumSaveType saveType) {
    if (saveType != EnumSaveType.CONFIG) {
        return json;
    }
    for (Entry<Integer, IParty> entry : partyList.entrySet()) {
        NBTTagCompound jp = entry.getValue().writeToNBT(new NBTTagCompound(), saveType);
        jp.setInteger("partyID", entry.getKey());
        json.appendTag(jp);
    }
    return json;
}
Also used : NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IParty(betterquesting.api.questing.party.IParty)

Aggregations

IParty (betterquesting.api.questing.party.IParty)15 UUID (java.util.UUID)9 UserEntry (betterquesting.misc.UserEntry)3 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)3 EnumPartyStatus (betterquesting.api.enums.EnumPartyStatus)2 ITask (betterquesting.api.questing.tasks.ITask)2 PartyInstance (betterquesting.questing.party.PartyInstance)2 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)2 MinecraftServer (net.minecraft.server.MinecraftServer)2 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)2 GuiButtonThemed (betterquesting.api.client.gui.controls.GuiButtonThemed)1 EnumPacketAction (betterquesting.api.enums.EnumPacketAction)1 DatabaseEvent (betterquesting.api.events.DatabaseEvent)1 IReward (betterquesting.api.questing.rewards.IReward)1 IPanelButton (betterquesting.api2.client.gui.controls.IPanelButton)1 GuiJsonEditor (betterquesting.client.gui.editors.json.scrolling.GuiJsonEditor)1 GuiManageParty (betterquesting.client.gui.party.GuiManageParty)1 GuiNoParty (betterquesting.client.gui.party.GuiNoParty)1 ArrayList (java.util.ArrayList)1 Minecraft (net.minecraft.client.Minecraft)1