Handle Party Complete for Quest Items

- Shared Item Quests not yet implemented
This commit is contained in:
Kam committed 2024-03-15 19:14:14 -04:00
1 parent ec3535d282
commit d8b756aba6
3 files changed
+51 -34

No files matched your search

@@ -596,11 +596,7 @@ public class NoppesUtilPlayer {
}
}
}
if(meetsComplete){
data.quest.questInterface.handleComplete(player);
}
data.quest.questInterface.handlePartyComplete(player, party, isLeader, partyOptions.objectiveRequirement);
if(meetsReward){
if(data.quest.rewardExp > 0){
player.worldObj.playSoundAtEntity(player, "random.orb", 0.1F, 0.5F * ((player.worldObj.rand.nextFloat() - player.worldObj.rand.nextFloat()) * 0.7F + 1.8F));
@@ -623,12 +619,10 @@ public class NoppesUtilPlayer {
PlayerQuestController.setQuestPartyFinished(data.quest, player, data);
}
if (hasNextQuest) {
if(meetsComplete){
QuestData nextQuest = new QuestData(data.quest.getNextQuest());
nextQuest.sendAlerts = data.quest.id != data.quest.getNextQuest().id || data.sendAlerts;
PlayerQuestController.addActiveQuest(nextQuest, player);
}
if (hasNextQuest && meetsComplete) {
QuestData nextQuest = new QuestData(data.quest.getNextQuest());
nextQuest.sendAlerts = data.quest.id != data.quest.getNextQuest().id || data.sendAlerts;
PlayerQuestController.addActiveQuest(nextQuest, player);
}
playerData.save();
@@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.api.handler.data.IQuestInterface;
import noppes.npcs.api.handler.data.IQuestObjective;
import noppes.npcs.constants.EnumPartyObjectives;
import noppes.npcs.controllers.PlayerDataController;
import noppes.npcs.controllers.data.Party;
import noppes.npcs.controllers.data.PlayerData;
@@ -24,7 +25,12 @@ public abstract class QuestInterface implements IQuestInterface {
}
}
}
public abstract Vector<String> getQuestLogStatus(EntityPlayer player);
public void handlePartyComplete(EntityPlayer player, Party party, boolean isLeader, EnumPartyObjectives objectives){
handleComplete(player);
}
public abstract Vector<String> getQuestLogStatus(EntityPlayer player);
public abstract IQuestObjective[] getObjectives(EntityPlayer var1);
+39 -22
View File
@@ -9,7 +9,6 @@ import noppes.npcs.NpcMiscInventory;
import noppes.npcs.api.handler.data.IQuestItem;
import noppes.npcs.api.handler.data.IQuestObjective;
import noppes.npcs.constants.EnumPartyObjectives;
import noppes.npcs.controllers.PlayerDataController;
import noppes.npcs.controllers.data.Party;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.scripted.CustomNPCsException;
@@ -93,29 +92,47 @@ public class QuestItem extends QuestInterface implements IQuestItem {
super.handleComplete(player);
if(leaveItems)
return;
for(ItemStack questitem : items.items.values()){
int stacksize = questitem.stackSize;
for(int i = 0; i < player.inventory.mainInventory.length; i++){
ItemStack item = player.inventory.mainInventory[i];
if(item == null)
continue;
if(NoppesUtilPlayer.compareItems(item, questitem, ignoreDamage, ignoreNBT)){
int size = item.stackSize;
if(stacksize - size >= 0){
player.inventory.setInventorySlotContents(i, null);
item.splitStack(size);
}
else{
item.splitStack(stacksize);
}
stacksize -= size;
if(stacksize <= 0)
break;
}
}
}
removeItems(player);
}
public void handlePartyComplete(EntityPlayer player, Party party, boolean isLeader, EnumPartyObjectives objectives){
super.handlePartyComplete(player, party, isLeader, objectives);
if(leaveItems)
return;
if(isLeader && objectives == EnumPartyObjectives.Leader){
removeItems(player);
} else if (objectives == EnumPartyObjectives.All){
removeItems(player);
} else if (objectives == EnumPartyObjectives.Shared){
// Shared Case
}
}
public void removeItems(EntityPlayer player){
for(ItemStack questitem : items.items.values()){
int stacksize = questitem.stackSize;
for(int i = 0; i < player.inventory.mainInventory.length; i++){
ItemStack item = player.inventory.mainInventory[i];
if(item == null)
continue;
if(NoppesUtilPlayer.compareItems(item, questitem, ignoreDamage, ignoreNBT)){
int size = item.stackSize;
if(stacksize - size >= 0){
player.inventory.setInventorySlotContents(i, null);
item.splitStack(size);
}
else{
item.splitStack(stacksize);
}
stacksize -= size;
if(stacksize <= 0)
break;
}
}
}
}
@Override
public Vector<String> getQuestLogStatus(EntityPlayer player) {
Vector<String> vec = new Vector<String>();