diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 1747ecc9c..db0bd623e 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -26,21 +26,7 @@ import noppes.npcs.constants.EnumScriptType; import noppes.npcs.containers.ContainerNPCBankInterface; import noppes.npcs.containers.ContainerNPCFollower; import noppes.npcs.containers.ContainerNPCFollowerHire; -import noppes.npcs.controllers.Bank; -import noppes.npcs.controllers.BankController; -import noppes.npcs.controllers.BankData; -import noppes.npcs.controllers.Dialog; -import noppes.npcs.controllers.DialogController; -import noppes.npcs.controllers.DialogOption; -import noppes.npcs.controllers.Line; -import noppes.npcs.controllers.PlayerBankData; -import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.controllers.PlayerQuestController; -import noppes.npcs.controllers.PlayerQuestData; -import noppes.npcs.controllers.PlayerTransportData; -import noppes.npcs.controllers.QuestData; -import noppes.npcs.controllers.TransportController; -import noppes.npcs.controllers.TransportLocation; +import noppes.npcs.controllers.*; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleFollower; import cpw.mods.fml.common.network.internal.FMLProxyPacket; @@ -303,13 +289,14 @@ public class NoppesUtilPlayer { Server.sendData(player, EnumPacketClient.GUI_DATA, data.writeNBT()); } public static void questCompletion(EntityPlayerMP player, int questId) { - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; - QuestData data = playerdata.activeQuests.get(questId); + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = playerData.questData; + QuestData data = questData.activeQuests.get(questId); if(data == null) return; - if(!data.quest.questInterface.isCompleted(player)) + if(!data.quest.questInterface.isCompleted(playerData)) return; QuestEvent.QuestTurnedInEvent event = new QuestEvent.QuestTurnedInEvent(new ScriptPlayer(player), data.quest); diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 71e101d49..963a9f94c 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -18,11 +18,7 @@ import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.tileentity.TileEntity; import noppes.npcs.blocks.tiles.TileBigSign; import noppes.npcs.blocks.tiles.TileBook; -import noppes.npcs.constants.EnumCompanionTalent; -import noppes.npcs.constants.EnumGuiType; -import noppes.npcs.constants.EnumPacketClient; -import noppes.npcs.constants.EnumPlayerPacket; -import noppes.npcs.constants.EnumRoleType; +import noppes.npcs.constants.*; import noppes.npcs.containers.ContainerMail; import noppes.npcs.controllers.*; import noppes.npcs.entity.EntityNPCInterface; @@ -161,8 +157,9 @@ public class PacketHandlerPlayer{ NoppesUtilPlayer.dialogSelected(buffer.readInt(), buffer.readInt(), player, npc); } else if(type == EnumPlayerPacket.CheckQuestCompletion){ - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; - playerdata.checkQuestCompletion(player, null); + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = PlayerDataController.instance.getPlayerData(player).questData; + questData.checkQuestCompletion(playerData, null); } else if(type == EnumPlayerPacket.QuestLog){ NoppesUtilPlayer.sendQuestLogData(player); diff --git a/src/main/java/noppes/npcs/QuestLogData.java b/src/main/java/noppes/npcs/QuestLogData.java index 19d59f88f..a0c83726e 100644 --- a/src/main/java/noppes/npcs/QuestLogData.java +++ b/src/main/java/noppes/npcs/QuestLogData.java @@ -6,6 +6,8 @@ import java.util.Vector; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.constants.EnumQuestCompletion; +import noppes.npcs.controllers.PlayerData; +import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.PlayerQuestController; import noppes.npcs.controllers.Quest; @@ -34,7 +36,7 @@ public class QuestLogData { } public void setData(EntityPlayer player){ - + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); for(Quest quest : PlayerQuestController.getActiveQuests(player)) { String category = quest.category.title; @@ -46,7 +48,7 @@ public class QuestLogData { questText.put(category + ":" + quest.title, quest.logText); questStatus.put(category + ":" + quest.title, quest.questInterface.getQuestLogStatus(player)); - if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isCompleted(player)) + if(quest.completion == EnumQuestCompletion.Npc && quest.questInterface.isCompleted(playerData)) finish.put(category + ":" + quest.title, quest.completerNpc); } } diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 701a919a3..29fac34ae 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -46,15 +46,13 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.*; import net.minecraftforge.event.world.*; import net.minecraftforge.event.world.WorldEvent.PotentialSpawns; -import noppes.npcs.controllers.PlayerData; -import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.constants.EnumQuestType; +import noppes.npcs.controllers.*; import noppes.npcs.controllers.data.PlayerDataScript; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.entity.ScriptPlayer; import noppes.npcs.scripted.event.ForgeEvent; -import noppes.npcs.controllers.PixelmonHelper; -import noppes.npcs.controllers.ScriptController; import org.lwjgl.input.Mouse; public class ScriptPlayerEventHandler { @@ -74,9 +72,16 @@ public class ScriptPlayerEventHandler { EventHooks.onPlayerTick(handler, scriptPlayer); } + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); if(PlayerDataController.instance != null) { - if(PlayerDataController.instance.getPlayerData(player).timers.size() > 0) - PlayerDataController.instance.getPlayerData(player).timers.update(); + if(playerData.timers.size() > 0) + playerData.timers.update(); + } + + if(player.ticksExisted%40 == 0){ + PlayerQuestData questData = playerData.questData; + for(EnumQuestType e : EnumQuestType.values()) + questData.checkQuestCompletion(playerData, e); } } } diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index 705dc2e75..09049d05e 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -291,11 +291,12 @@ public class ServerEventsHandler { } private void doQuest(EntityPlayer player, EntityLivingBase entity, boolean all) { - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = playerData.questData; boolean change = false; String entityName = EntityList.getEntityString(entity); - for(QuestData data : playerdata.activeQuests.values()){ + for(QuestData data : questData.activeQuests.values()){ if(data.quest.type != EnumQuestType.Kill && data.quest.type != EnumQuestType.AreaKill) continue; if(data.quest.type == EnumQuestType.AreaKill && all){ @@ -326,15 +327,16 @@ public class ServerEventsHandler { if(!change) return; - playerdata.checkQuestCompletion(player,EnumQuestType.Kill); + questData.checkQuestCompletion(playerData,EnumQuestType.Kill); } @SubscribeEvent public void pickUp(EntityItemPickupEvent event){ if(event.entityPlayer.worldObj.isRemote) return; - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(event.entityPlayer).questData; - playerdata.checkQuestCompletion(event.entityPlayer, EnumQuestType.Item); + PlayerData playerData = PlayerDataController.instance.getPlayerData(event.entityPlayer); + PlayerQuestData questData = playerData.questData; + questData.checkQuestCompletion(playerData, EnumQuestType.Item); } @SubscribeEvent diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileWaypoint.java b/src/main/java/noppes/npcs/blocks/tiles/TileWaypoint.java index 564a3f94b..5d8b5914a 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileWaypoint.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileWaypoint.java @@ -10,6 +10,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.StatCollector; import noppes.npcs.constants.EnumQuestType; +import noppes.npcs.controllers.PlayerData; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.PlayerQuestData; import noppes.npcs.controllers.QuestData; @@ -43,15 +44,16 @@ public class TileWaypoint extends TileEntity { if(toCheck.isEmpty()) return; for(EntityPlayer player : toCheck){ - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; - for(QuestData data : playerdata.activeQuests.values()){ + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = playerData.questData; + for(QuestData data : questData.activeQuests.values()){ if(data.quest.type != EnumQuestType.Location) continue; QuestLocation quest = (QuestLocation) data.quest.questInterface; if(quest.setFound(data, name)){ player.addChatMessage(new ChatComponentTranslation(name + " " + StatCollector.translateToLocal("quest.found"))); - playerdata.checkQuestCompletion(player, EnumQuestType.Location); + questData.checkQuestCompletion(playerData, EnumQuestType.Location); } } } diff --git a/src/main/java/noppes/npcs/controllers/PlayerQuestData.java b/src/main/java/noppes/npcs/controllers/PlayerQuestData.java index daeb4aaee..4523f9ba0 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/PlayerQuestData.java @@ -79,24 +79,26 @@ public class PlayerQuestData { } public QuestData getQuestCompletion(EntityPlayer player,EntityNPCInterface npc) { + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); for(QuestData data : activeQuests.values()){ Quest quest = data.quest; - if(quest != null && quest.completion == EnumQuestCompletion.Npc && quest.completerNpc.equals(npc.getCommandSenderName()) && quest.questInterface.isCompleted(player)){ + if(quest != null && quest.completion == EnumQuestCompletion.Npc && quest.completerNpc.equals(npc.getCommandSenderName()) && quest.questInterface.isCompleted(playerData)){ return data; } } return null; } - public boolean checkQuestCompletion(EntityPlayer player,EnumQuestType type) { + public boolean checkQuestCompletion(PlayerData playerData,EnumQuestType type) { boolean bo = false; + EntityPlayer player = playerData.player; for(QuestData data : this.activeQuests.values()){ if(data.quest.type != type && type != null) continue; QuestInterface inter = data.quest.questInterface; - - if(inter.isCompleted(player)){ + + if(inter.isCompleted(playerData)){ if(!data.isCompleted){ if(!data.quest.complete(player,data)){ Server.sendData((EntityPlayerMP)player, EnumPacketClient.MESSAGE, "quest.completed", data.quest.title); diff --git a/src/main/java/noppes/npcs/quests/QuestDialog.java b/src/main/java/noppes/npcs/quests/QuestDialog.java index 6dd84633b..0ce52a2f8 100644 --- a/src/main/java/noppes/npcs/quests/QuestDialog.java +++ b/src/main/java/noppes/npcs/quests/QuestDialog.java @@ -32,9 +32,9 @@ public class QuestDialog extends QuestInterface implements IQuestDialog { } @Override - public boolean isCompleted(EntityPlayer player) { + public boolean isCompleted(PlayerData playerData) { for(int dialogId : dialogs.values()) - if(!PlayerDataController.instance.getPlayerData(player).dialogData.dialogsRead.contains(dialogId)) + if(!playerData.dialogData.dialogsRead.contains(dialogId)) return false; return true; } @@ -94,17 +94,17 @@ public class QuestDialog extends QuestInterface implements IQuestDialog { public void setProgress(int progress) { if (progress >= 0 && progress <= 1) { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); boolean completed = data.dialogData.dialogsRead.contains(this.dialog.id); if (progress == 0 && completed) { data.dialogData.dialogsRead.remove(this.dialog.id); - data.questData.checkQuestCompletion(this.player, EnumQuestType.values()[1]); + data.questData.checkQuestCompletion(data, EnumQuestType.values()[1]); data.saveNBTData(data.getNBT()); } if (progress == 1 && !completed) { data.dialogData.dialogsRead.add(this.dialog.id); - data.questData.checkQuestCompletion(this.player, EnumQuestType.values()[1]); + data.questData.checkQuestCompletion(data, EnumQuestType.values()[1]); data.saveNBTData(data.getNBT()); } @@ -118,7 +118,7 @@ public class QuestDialog extends QuestInterface implements IQuestDialog { } public boolean isCompleted() { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); return data.dialogData.dialogsRead.contains(this.dialog.id); } diff --git a/src/main/java/noppes/npcs/quests/QuestInterface.java b/src/main/java/noppes/npcs/quests/QuestInterface.java index dd1ef4fa7..3f7ceb87e 100644 --- a/src/main/java/noppes/npcs/quests/QuestInterface.java +++ b/src/main/java/noppes/npcs/quests/QuestInterface.java @@ -4,6 +4,7 @@ import java.util.Vector; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.controllers.PlayerData; import noppes.npcs.scripted.handler.data.IQuestInterface; import noppes.npcs.scripted.handler.data.IQuestObjective; @@ -11,7 +12,7 @@ public abstract class QuestInterface implements IQuestInterface { public int questId; public abstract void writeEntityToNBT(NBTTagCompound compound); public abstract void readEntityFromNBT(NBTTagCompound compound); - public abstract boolean isCompleted(EntityPlayer player); + public abstract boolean isCompleted(PlayerData player); public abstract void handleComplete(EntityPlayer player); public abstract Vector getQuestLogStatus(EntityPlayer player); public abstract IQuestObjective[] getObjectives(EntityPlayer var1); diff --git a/src/main/java/noppes/npcs/quests/QuestItem.java b/src/main/java/noppes/npcs/quests/QuestItem.java index fb3221a21..a8817b28d 100644 --- a/src/main/java/noppes/npcs/quests/QuestItem.java +++ b/src/main/java/noppes/npcs/quests/QuestItem.java @@ -8,6 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.NoppesUtilServer; import noppes.npcs.NpcMiscInventory; +import noppes.npcs.controllers.PlayerData; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.handler.data.IQuestItem; import noppes.npcs.scripted.handler.data.IQuestObjective; @@ -36,8 +37,8 @@ public class QuestItem extends QuestInterface implements IQuestItem { } @Override - public boolean isCompleted(EntityPlayer player) { - HashMap map = getProcessSet(player); + public boolean isCompleted(PlayerData playerData) { + HashMap map = getProcessSet(playerData.player); for(ItemStack reqItem : items.items.values()){ boolean done = false; for(ItemStack item : map.values()){ diff --git a/src/main/java/noppes/npcs/quests/QuestKill.java b/src/main/java/noppes/npcs/quests/QuestKill.java index ed716b300..d4568c1eb 100644 --- a/src/main/java/noppes/npcs/quests/QuestKill.java +++ b/src/main/java/noppes/npcs/quests/QuestKill.java @@ -43,8 +43,8 @@ public class QuestKill extends QuestInterface implements IQuestKill { } @Override - public boolean isCompleted(EntityPlayer player) { - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; + public boolean isCompleted(PlayerData playerData) { + PlayerQuestData playerdata = playerData.questData; QuestData data = playerdata.activeQuests.get(questId); if(data == null) return false; @@ -129,7 +129,7 @@ public class QuestKill extends QuestInterface implements IQuestKill { } public int getProgress() { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); PlayerQuestData playerdata = data.questData; QuestData questdata = (QuestData)playerdata.activeQuests.get(this.parent.questId); HashMap killed = this.parent.getKilled(questdata); @@ -138,15 +138,15 @@ public class QuestKill extends QuestInterface implements IQuestKill { public void setProgress(int progress) { if (progress >= 0 && progress <= this.amount) { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); PlayerQuestData playerdata = data.questData; QuestData questdata = (QuestData)playerdata.activeQuests.get(this.parent.questId); HashMap killed = this.parent.getKilled(questdata); if (!killed.containsKey(this.entity) || (Integer)killed.get(this.entity) != progress) { killed.put(this.entity, progress); this.parent.setKilled(questdata, killed); - data.questData.checkQuestCompletion(this.player, EnumQuestType.values()[2]); - data.questData.checkQuestCompletion(this.player, EnumQuestType.values()[4]); + data.questData.checkQuestCompletion(data, EnumQuestType.values()[2]); + data.questData.checkQuestCompletion(data, EnumQuestType.values()[4]); data.saveNBTData(data.getNBT()); } } else { diff --git a/src/main/java/noppes/npcs/quests/QuestLocation.java b/src/main/java/noppes/npcs/quests/QuestLocation.java index edefd2887..15c04fdc5 100644 --- a/src/main/java/noppes/npcs/quests/QuestLocation.java +++ b/src/main/java/noppes/npcs/quests/QuestLocation.java @@ -37,8 +37,8 @@ public class QuestLocation extends QuestInterface implements IQuestLocation { } @Override - public boolean isCompleted(EntityPlayer player) { - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; + public boolean isCompleted(PlayerData playerData) { + PlayerQuestData playerdata = playerData.questData; QuestData data = playerdata.activeQuests.get(questId); if(data == null) return false; @@ -159,12 +159,12 @@ public class QuestLocation extends QuestInterface implements IQuestLocation { public void setProgress(int progress) { if (progress >= 0 && progress <= 1) { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); QuestData questData = (QuestData)data.questData.activeQuests.get(this.parent.questId); boolean completed = questData.extraData.getBoolean (this.nbtName); if ((!completed || progress != 1) && (completed || progress != 0)) { questData.extraData.setBoolean(this.nbtName, progress == 1); - data.questData.checkQuestCompletion(this.player, EnumQuestType.values()[3]); + data.questData.checkQuestCompletion(data, EnumQuestType.values()[3]); data.saveNBTData(data.getNBT()); } } else { @@ -177,7 +177,7 @@ public class QuestLocation extends QuestInterface implements IQuestLocation { } public boolean isCompleted() { - PlayerData data = PlayerData.get(this.player); + PlayerData data = PlayerDataController.instance.getPlayerData(player); QuestData questData = (QuestData)data.questData.activeQuests.get(this.parent.questId); return questData.extraData.getBoolean(this.nbtName); } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index a88f57488..7bdf65b10 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -406,8 +406,9 @@ public class ScriptPlayer extends ScriptLivingBase public void updatePlayerInventory() { ((EntityPlayerMP)this.entity).inventoryContainer.detectAndSendChanges(); - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; - playerdata.checkQuestCompletion((EntityPlayer)this.entity, EnumQuestType.Item); + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = playerData.questData; + questData.checkQuestCompletion(playerData, EnumQuestType.Item); } public boolean checkGUIOpen() { @@ -417,9 +418,10 @@ public class ScriptPlayer extends ScriptLivingBase } public void checkQuestCompleted() { - PlayerQuestData playerdata = PlayerDataController.instance.getPlayerData(player).questData; + PlayerData playerData = PlayerDataController.instance.getPlayerData(player); + PlayerQuestData questData = playerData.questData; for(EnumQuestType e : EnumQuestType.values()) - playerdata.checkQuestCompletion((EntityPlayer)this.entity, e); + questData.checkQuestCompletion(playerData, e); } public ScriptDBCPlayer getDBCPlayer() {