diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 68e026ad9..4efdb0f91 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.WorldServer; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.event.entity.EntityStruckByLightningEvent; import net.minecraftforge.event.entity.PlaySoundAtEntityEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; @@ -23,10 +24,12 @@ import noppes.npcs.api.entity.IPlayer; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.constants.SyncType; +import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.ScriptController; import noppes.npcs.controllers.data.*; import noppes.npcs.entity.EntityNPCInterface; +import noppes.npcs.quests.QuestItem; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.item.ScriptCustomItem; @@ -236,6 +239,21 @@ public class ScriptPlayerEventHandler { if(event.player == null || event.player.worldObj == null) return; + if(!event.player.worldObj.isRemote && !(event.player instanceof FakePlayer)){ + PlayerData playerData = PlayerDataController.Instance.getPlayerData(event.player); + PlayerQuestData questData = playerData.questData; + QuestItem.pickedUp = event.pickedUp.getEntityItem(); + + Party playerParty = playerData.getPlayerParty(); + if(playerParty != null){ + QuestItem.pickedUpParty = event.pickedUp.getEntityItem(); + QuestItem.pickedUpPlayer = event.player; + PartyController.Instance().checkQuestCompletion(playerParty, EnumQuestType.Item); + } + + questData.checkQuestCompletion(playerData, EnumQuestType.Item); + } + if(event.player.worldObj instanceof WorldServer) { PlayerDataScript handler = ScriptController.Instance.playerScripts; IPlayer scriptPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.player); diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 9da8a0cc0..9d2e62e67 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -457,25 +457,7 @@ public class ServerEventsHandler { PartyController.Instance().pingPartyQuestObjectiveUpdate(party); PartyController.Instance().checkQuestCompletion(party, EnumQuestType.Kill); } - - @SubscribeEvent - public void pickUp(EntityItemPickupEvent event){ - if(event.entityPlayer.worldObj.isRemote || event.entityPlayer instanceof FakePlayer) - return; - PlayerData playerData = PlayerDataController.Instance.getPlayerData(event.entityPlayer); - PlayerQuestData questData = playerData.questData; - QuestItem.pickedUp = event.item.getEntityItem(); - - Party playerParty = playerData.getPlayerParty(); - if(playerParty != null){ - QuestItem.pickedUpParty = event.item.getEntityItem(); - QuestItem.pickedUpPlayer = event.entityPlayer; - PartyController.Instance().checkQuestCompletion(playerParty, EnumQuestType.Item); - } - - questData.checkQuestCompletion(playerData, EnumQuestType.Item); - } - + @SubscribeEvent public void world(PlayerEvent.SaveToFile event){ PlayerData data = PlayerDataController.Instance.getPlayerData((EntityPlayer) event.entity); diff --git a/src/main/java/noppes/npcs/quests/QuestItem.java b/src/main/java/noppes/npcs/quests/QuestItem.java index c864adad1..a71487b82 100644 --- a/src/main/java/noppes/npcs/quests/QuestItem.java +++ b/src/main/java/noppes/npcs/quests/QuestItem.java @@ -18,6 +18,7 @@ import java.util.*; public class QuestItem extends QuestInterface implements IQuestItem { public NpcMiscInventory items = new NpcMiscInventory(3); + public static EntityPlayer pickedUpPlayerSolo; public static ItemStack pickedUp; public static ItemStack pickedUpParty;