////////////////

        protected override void ReceiveOnClient()
        {
            var      mymod   = RewardsMod.Instance;
            var      myworld = ModContent.GetInstance <RewardsWorld>();
            KillData data    = myworld.Logic.GetPlayerData(Main.LocalPlayer);

            if (data == null)
            {
                throw new ModHelpersException("No player data for " + Main.LocalPlayer.name);
            }

            NPC npc = new NPC();

            npc.SetDefaults(this.NpcType);
            npc.boss = this.IsBoss;

            bool  isGrind, isExpired;
            float reward = data.RecordKill(npc, out isGrind, out isExpired);

            if (mymod.SettingsConfig.DebugModeKillInfo)
            {
                int  kills     = data.KilledNpcs.ContainsKey(npc.type) ? data.KilledNpcs[npc.type] : -1;
                var  npcDef    = new NPCDefinition(npc.type);
                bool needsBoss = mymod.PointsConfig.NpcRewardRequiredAsBoss.Contains(npcDef);

                string msg = "ReceiveOnClient npc: " + npc.TypeName + " (" + npc.type + ")" + ", #: " + kills
                             + ", isGrind: " + isGrind + ", isExpired: " + isExpired + ", reward: " + reward
                             + ", needsBoss:" + needsBoss + " (is? " + npc.boss + ")";
                Main.NewText(msg);
                LogHelpers.Log(" " + msg);
            }

            data.AddRewardForPlayer(Main.LocalPlayer, isGrind, isExpired, reward);
        }