mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 00:17:27 +00:00
Handle Party Complete for Quest Items
- Shared Item Quests not yet implemented
This commit is contained in:
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);
|
||||
|
||||
|
||||
|
||||
@@ -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>();
|
||||
|
||||
Reference in new issue
Block a user